summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2018-04-09 19:43:50 +0200
committerByteHamster <info@bytehamster.com>2018-04-09 19:43:50 +0200
commit64221f7f56a422406c2a664e18ad8593e6825ef2 (patch)
treed200760ad52e8a9e5b358fa06af98b646254e01f
parent1831430a6e47be1e34d2e8a4b977e79289ca7b2b (diff)
downloadAntennaPod-64221f7f56a422406c2a664e18ad8593e6825ef2.zip
Allow to enter PiP automatically
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java29
-rw-r--r--app/src/main/res/xml/preferences.xml8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java12
-rw-r--r--core/src/main/res/values/arrays.xml10
-rw-r--r--core/src/main/res/values/strings.xml3
6 files changed, 56 insertions, 10 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
index b51f45d93..8431e7b2e 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -226,7 +226,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
@Override
protected void onPause() {
- if (!supportsAndisInPictureInPictureMode()) {
+ if (!compatIsInPictureInPictureMode()) {
if (controller != null) {
controller.reinitServiceIfPaused();
controller.pause();
@@ -917,7 +917,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
}
}
- /* package */ boolean supportsAndisInPictureInPictureMode() {
+ /* package */ boolean compatIsInPictureInPictureMode() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && supportsPictureInPicture()) {
return isInPictureInPictureMode();
} else {
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
index 4ab934cc2..83635853a 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
@@ -24,6 +24,7 @@ import android.widget.ProgressBar;
import android.widget.SeekBar;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.feed.MediaType;
+import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.service.playback.PlayerStatus;
import de.danoeh.antennapod.core.util.playback.ExternalMedia;
@@ -101,14 +102,22 @@ public class VideoplayerActivity extends MediaplayerActivity {
@Override
protected void onStop() {
super.onStop();
- if (!supportsAndisInPictureInPictureMode()) {
+ if (!compatIsInPictureInPictureMode()) {
videoControlsHider.stop();
}
}
@Override
+ public void onUserLeaveHint () {
+ if (!compatIsInPictureInPictureMode() && UserPreferences.getVideoBackgroundBehavior()
+ == UserPreferences.VideoBackgroundBehavior.PICTURE_IN_PICTURE) {
+ compatEnterPictureInPicture();
+ }
+ }
+
+ @Override
protected void onPause() {
- if (!supportsAndisInPictureInPictureMode()) {
+ if (!compatIsInPictureInPictureMode()) {
if (controller != null && controller.getStatus() == PlayerStatus.PLAYING) {
controller.pause();
}
@@ -191,7 +200,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
private final View.OnTouchListener onVideoviewTouched = (v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
- if (supportsAndisInPictureInPictureMode()) {
+ if (compatIsInPictureInPictureMode()) {
return true;
}
videoControlsHider.stop();
@@ -390,16 +399,20 @@ public class VideoplayerActivity extends MediaplayerActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.player_go_to_picture_in_picture) {
- if (supportsPictureInPicture() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- getSupportActionBar().hide();
- hideVideoControls(false);
- enterPictureInPictureMode();
- }
+ compatEnterPictureInPicture();
return true;
}
return super.onOptionsItemSelected(item);
}
+ private void compatEnterPictureInPicture() {
+ if (supportsPictureInPicture() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ getSupportActionBar().hide();
+ hideVideoControls(false);
+ enterPictureInPictureMode();
+ }
+ }
+
private static class VideoControlsHider extends Handler {
private static final int DELAY = 2500;
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index ba389fc3c..622fef05b 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -171,6 +171,14 @@
android:key="prefResumeAfterCall"
android:summary="@string/pref_resumeAfterCall_sum"
android:title="@string/pref_resumeAfterCall_title"/>
+ <com.afollestad.materialdialogs.prefs.MaterialListPreference
+ android:defaultValue="stop"
+ android:entries="@array/video_background_behavior_options"
+ android:entryValues="@array/video_background_behavior_values"
+ android:key="prefVideoBehavior"
+ android:summary="@string/pref_videoBehavior_sum"
+ android:title="@string/pref_videoBehavior_title"
+ app:useStockLayout="true"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/network_pref">
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
+ }
}
diff --git a/core/src/main/res/values/arrays.xml b/core/src/main/res/values/arrays.xml
index 45650495c..beb52282b 100644
--- a/core/src/main/res/values/arrays.xml
+++ b/core/src/main/res/values/arrays.xml
@@ -224,4 +224,14 @@
<item>@string/fast_forward_label</item>
<item>@string/skip_episode_label</item>
</string-array>
+
+ <string-array name="video_background_behavior_options">
+ <item>@string/stop_playback</item>
+ <item>@string/player_go_to_picture_in_picture</item>
+ </string-array>
+
+ <string-array name="video_background_behavior_values">
+ <item>stop</item>
+ <item>pip</item>
+ </string-array>
</resources>
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index 5558b97b3..b8286cbd0 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -440,6 +440,9 @@
<string name="pref_cast_message_free_flavor">Chromecast requires third party proprietary libraries that are disabled in this version of AntennaPod</string>
<string name="pref_enqueue_downloaded_title">Enqueue Downloaded</string>
<string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string>
+ <string name="pref_videoBehavior_title">Video behavior</string>
+ <string name="pref_videoBehavior_sum">Behavior when leaving video playback</string>
+ <string name="stop_playback">Stop playback</string>
<!-- Auto-Flattr dialog -->
<string name="auto_flattr_enable">Enable automatic flattring</string>