Allow to enter PiP automatically
This commit is contained in:
parent
1831430a6e
commit
64221f7f56
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue