From 64221f7f56a422406c2a664e18ad8593e6825ef2 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 9 Apr 2018 19:43:50 +0200 Subject: Allow to enter PiP automatically --- .../danoeh/antennapod/core/preferences/UserPreferences.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 743ee135d..4a6003af4 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -74,6 +74,7 @@ public class UserPreferences { private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray"; private static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss"; private static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall"; + private static final String PREF_VIDEO_BEHAVIOR = "prefVideoBehavior"; // Network private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; @@ -661,6 +662,13 @@ public class UserPreferences { .apply(); } + public static VideoBackgroundBehavior getVideoBackgroundBehavior() { + switch (prefs.getString(PREF_VIDEO_BEHAVIOR, "stop")) { + case "stop": return VideoBackgroundBehavior.STOP; + case "pip": return VideoBackgroundBehavior.PICTURE_IN_PICTURE; + default: return VideoBackgroundBehavior.STOP; + } + } public static EpisodeCleanupAlgorithm getEpisodeCleanupAlgorithm() { int cleanupValue = Integer.parseInt(prefs.getString(PREF_EPISODE_CLEANUP, "-1")); @@ -839,4 +847,8 @@ public class UserPreferences { public static boolean isCastEnabled() { return prefs.getBoolean(PREF_CAST_ENABLED, false); } + + public enum VideoBackgroundBehavior { + STOP, PICTURE_IN_PICTURE + } } -- cgit v1.2.3 From d757abedbc771224787ab962134b7d61b27fd6e4 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 9 Apr 2018 22:20:43 +0200 Subject: Removing PiP option for unsupported devices --- .../core/preferences/UserPreferences.java | 2 +- .../core/util/gui/PictureInPictureUtil.java | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 4a6003af4..5db7c3323 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -74,7 +74,7 @@ public class UserPreferences { private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray"; private static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss"; private static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall"; - private static final String PREF_VIDEO_BEHAVIOR = "prefVideoBehavior"; + public static final String PREF_VIDEO_BEHAVIOR = "prefVideoBehavior"; // Network private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded"; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java b/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java new file mode 100644 index 000000000..f763653a1 --- /dev/null +++ b/core/src/main/java/de/danoeh/antennapod/core/util/gui/PictureInPictureUtil.java @@ -0,0 +1,27 @@ +package de.danoeh.antennapod.core.util.gui; + +import android.app.Activity; +import android.content.pm.PackageManager; +import android.os.Build; + +public class PictureInPictureUtil { + private PictureInPictureUtil() { + } + + public static boolean supportsPictureInPicture(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + PackageManager packageManager = activity.getPackageManager(); + return packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE); + } else { + return false; + } + } + + public static boolean isInPictureInPictureMode(Activity activity) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && supportsPictureInPicture(activity)) { + return activity.isInPictureInPictureMode(); + } else { + return false; + } + } +} -- cgit v1.2.3 From 0f80fac6805bd7b1476aa04a37d6f12f1ba10d92 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 11 Apr 2018 12:15:49 +0200 Subject: Allow to continue playback when leaving player --- .../java/de/danoeh/antennapod/core/preferences/UserPreferences.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java index 5db7c3323..bad48e4cc 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java @@ -666,6 +666,7 @@ public class UserPreferences { switch (prefs.getString(PREF_VIDEO_BEHAVIOR, "stop")) { case "stop": return VideoBackgroundBehavior.STOP; case "pip": return VideoBackgroundBehavior.PICTURE_IN_PICTURE; + case "continue": return VideoBackgroundBehavior.CONTINUE_PLAYING; default: return VideoBackgroundBehavior.STOP; } } @@ -849,6 +850,6 @@ public class UserPreferences { } public enum VideoBackgroundBehavior { - STOP, PICTURE_IN_PICTURE + STOP, PICTURE_IN_PICTURE, CONTINUE_PLAYING } } -- cgit v1.2.3 From 2924955b61f9c3cc7280138a21bfa1b58448bd5c Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Thu, 12 Apr 2018 23:09:13 +0200 Subject: Don't pause directly after starting When registering the receiver, it immediately receives a headset unplugged event (broadcast is sticky) and pauses playback again in some cases. We are only interested in status changes, so we can just return. Fixes #2635 --- .../de/danoeh/antennapod/core/service/playback/PlaybackService.java | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java index ab25f0a5f..67a2cdad2 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java @@ -1436,6 +1436,12 @@ public class PlaybackService extends MediaBrowserServiceCompat { @Override public void onReceive(Context context, Intent intent) { + if (isInitialStickyBroadcast ()) { + // Don't pause playback after we just started, just because the receiver + // delivers the current headset state (instead of a change) + return; + } + if (TextUtils.equals(intent.getAction(), Intent.ACTION_HEADSET_PLUG)) { int state = intent.getIntExtra("state", -1); if (state != -1) { -- cgit v1.2.3 From 8c628d98b9074b000e631565b2b484902756f322 Mon Sep 17 00:00:00 2001 From: ydinath Date: Sat, 21 Apr 2018 10:17:41 -0400 Subject: Replace deprecated org.apache.commons.lang3 methods with org.apache.commons.text methods --- .../antennapod/core/syndication/namespace/atom/AtomText.java | 2 +- .../java/de/danoeh/antennapod/core/util/FileNameGenerator.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java index ea1b724d4..b512dce3f 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java +++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java @@ -1,6 +1,6 @@ package de.danoeh.antennapod.core.syndication.namespace.atom; -import org.apache.commons.lang3.StringEscapeUtils; +import org.apache.commons.text.StringEscapeUtils; import de.danoeh.antennapod.core.syndication.namespace.Namespace; import de.danoeh.antennapod.core.syndication.namespace.SyndElement; diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java index a93dd8ee3..d2e9d835e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java @@ -3,7 +3,8 @@ package de.danoeh.antennapod.core.util; import android.text.TextUtils; import org.apache.commons.lang3.ArrayUtils; -import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.text.RandomStringGenerator; + /** Generates valid filenames for a given string. */ public class FileNameGenerator { @@ -34,7 +35,11 @@ public class FileNameGenerator { } String filename = buf.toString().trim(); if(TextUtils.isEmpty(filename)) { - return RandomStringUtils.randomAlphanumeric(8); + return new RandomStringGenerator.Builder() + .withinRange('0', 'z') + .filteredBy(Character::isLetterOrDigit) + .build() + .generate(8); } return filename; } -- cgit v1.2.3 From a8374853636a9b5eca301f70a5da52641e297ed9 Mon Sep 17 00:00:00 2001 From: ydinath Date: Sat, 21 Apr 2018 10:28:16 -0400 Subject: Fix formatting --- .../src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core/src/main/java') diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java index d2e9d835e..e99461806 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FileNameGenerator.java @@ -39,7 +39,7 @@ public class FileNameGenerator { .withinRange('0', 'z') .filteredBy(Character::isLetterOrDigit) .build() - .generate(8); + .generate(8); } return filename; } -- cgit v1.2.3