From c5d1d5408b1a2f31ad697fb0940148801ee0ee1a Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 24 Dec 2017 11:46:59 +0100 Subject: Added Picure in picture --- app/src/main/AndroidManifest.xml | 3 +- .../antennapod/activity/MediaplayerActivity.java | 9 ++++-- .../antennapod/activity/VideoplayerActivity.java | 35 ++++++++++++++++++++-- app/src/main/res/menu/mediaplayer.xml | 8 +++++ 4 files changed, 48 insertions(+), 7 deletions(-) (limited to 'app') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 56d076441..5b5c1e5ad 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -224,7 +224,8 @@ { if (event.getAction() == MotionEvent.ACTION_DOWN) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N + && isInPictureInPictureMode()) { + return true; + } videoControlsHider.stop(); toggleVideoControlsVisibility(); if (videoControlsShowing) { @@ -349,6 +358,26 @@ public class VideoplayerActivity extends MediaplayerActivity { } } + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + super.onPrepareOptionsMenu(menu); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + menu.findItem(R.id.player_go_to_picture_in_picture).setVisible(true); + } + return true; + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == R.id.player_go_to_picture_in_picture) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + enterPictureInPictureMode(); + } + return true; + } + return super.onOptionsItemSelected(item); + } + private static class VideoControlsHider extends Handler { private static final int DELAY = 2500; diff --git a/app/src/main/res/menu/mediaplayer.xml b/app/src/main/res/menu/mediaplayer.xml index 530eb3400..98c7478a6 100644 --- a/app/src/main/res/menu/mediaplayer.xml +++ b/app/src/main/res/menu/mediaplayer.xml @@ -41,6 +41,14 @@ android:title="@string/visit_website_label" android:visible="false"> + + + + Date: Sun, 24 Dec 2017 12:53:04 +0100 Subject: Added configChanges --- .../java/de/danoeh/antennapod/activity/VideoplayerActivity.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app') 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 c7dd6285f..80288af24 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.activity; import android.annotation.SuppressLint; import android.content.Intent; +import android.content.res.Configuration; import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; @@ -378,6 +379,12 @@ public class VideoplayerActivity extends MediaplayerActivity { return super.onOptionsItemSelected(item); } + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + //TODO + } + private static class VideoControlsHider extends Handler { private static final int DELAY = 2500; -- cgit v1.2.3 From 7e72ff0b0e96cfb009146892c5db20dfa60d63c7 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 6 Jan 2018 13:20:02 +0100 Subject: Fixed scaling of video --- .../antennapod/activity/VideoplayerActivity.java | 11 ++++++++++- .../antennapod/view/AspectRatioVideoView.java | 23 ++++++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) (limited to 'app') 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 80288af24..bf1cc5b7e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -8,8 +8,10 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.WindowCompat; +import android.util.DisplayMetrics; import android.util.Log; import android.util.Pair; +import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; @@ -382,7 +384,14 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - //TODO + + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) { + // This is only relevant for picture in picture + DisplayMetrics dm = getResources().getDisplayMetrics(); + float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenWidthDp, dm); + float py = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenHeightDp, dm); + videoview.setAvailableSize(px, py); + } } private static class VideoControlsHider extends Handler { diff --git a/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java b/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java index f930c912a..138fbff00 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java +++ b/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java @@ -25,6 +25,8 @@ public class AspectRatioVideoView extends VideoView { private int mVideoWidth; private int mVideoHeight; + private float mAvailableWidth = -1; + private float mAvailableHeight = -1; public AspectRatioVideoView(Context context) { this(context, null); @@ -48,8 +50,13 @@ public class AspectRatioVideoView extends VideoView { return; } - float heightRatio = (float) mVideoHeight / (float) getHeight(); - float widthRatio = (float) mVideoWidth / (float) getWidth(); + if (mAvailableWidth < 0 || mAvailableHeight < 0) { + mAvailableWidth = getWidth(); + mAvailableHeight = getHeight(); + } + + float heightRatio = (float) mVideoHeight / mAvailableHeight; + float widthRatio = (float) mVideoWidth / mAvailableWidth; int scaledHeight; int scaledWidth; @@ -94,4 +101,16 @@ public class AspectRatioVideoView extends VideoView { invalidate(); } + /** + * Sets the maximum size that the view might expand to + * @param width + * @param height + */ + public void setAvailableSize(float width, float height) { + mAvailableWidth = width; + mAvailableHeight = height; + requestLayout(); + invalidate(); + } + } -- cgit v1.2.3 From fbb5f28737804d93955771b29d10f76b4fb4128e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 6 Jan 2018 13:31:26 +0100 Subject: Allow to touch space next to video player --- .../main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java | 5 +++-- app/src/main/res/layout/videoplayer_activity.xml | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'app') 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 bf1cc5b7e..f01a63e37 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -144,7 +144,8 @@ public class VideoplayerActivity extends MediaplayerActivity { videoview = (AspectRatioVideoView) findViewById(R.id.videoview); progressIndicator = (ProgressBar) findViewById(R.id.progressIndicator); videoview.getHolder().addCallback(surfaceHolderCallback); - videoview.setOnTouchListener(onVideoviewTouched); + findViewById(R.id.videoframe).setOnTouchListener(onVideoviewTouched); + videoOverlay.setOnTouchListener((view, motionEvent) -> true); // To suppress touches directly below the slider if (Build.VERSION.SDK_INT >= 16) { videoview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); @@ -181,7 +182,7 @@ public class VideoplayerActivity extends MediaplayerActivity { progressIndicator.setVisibility(View.INVISIBLE); } - View.OnTouchListener onVideoviewTouched = (v, event) -> { + private View.OnTouchListener onVideoviewTouched = (v, event) -> { if (event.getAction() == MotionEvent.ACTION_DOWN) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInPictureInPictureMode()) { diff --git a/app/src/main/res/layout/videoplayer_activity.xml b/app/src/main/res/layout/videoplayer_activity.xml index 4db663e19..2d0b0cf56 100644 --- a/app/src/main/res/layout/videoplayer_activity.xml +++ b/app/src/main/res/layout/videoplayer_activity.xml @@ -3,7 +3,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/black" - android:orientation="vertical"> + android:orientation="vertical" + android:id="@+id/videoframe"> Date: Sat, 6 Jan 2018 13:35:56 +0100 Subject: Fixed flickering when resizing --- app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java | 2 -- 1 file changed, 2 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java b/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java index 138fbff00..e9ec5491c 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java +++ b/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java @@ -109,8 +109,6 @@ public class AspectRatioVideoView extends VideoView { public void setAvailableSize(float width, float height) { mAvailableWidth = width; mAvailableHeight = height; - requestLayout(); - invalidate(); } } -- cgit v1.2.3 From 8ab64d516a3e33a8709c9f9e995691feac80282e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 9 Jan 2018 08:57:40 +0100 Subject: Hide controls when entering PiP --- .../antennapod/activity/VideoplayerActivity.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'app') 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 f01a63e37..4f28a789d 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -331,11 +331,13 @@ public class VideoplayerActivity extends MediaplayerActivity { } @SuppressLint("NewApi") - private void hideVideoControls() { - final Animation animation = AnimationUtils.loadAnimation(this, R.anim.fade_out); - if (animation != null) { - videoOverlay.startAnimation(animation); - controls.startAnimation(animation); + private void hideVideoControls(boolean showAnimation) { + if (showAnimation) { + final Animation animation = AnimationUtils.loadAnimation(this, R.anim.fade_out); + if (animation != null) { + videoOverlay.startAnimation(animation); + controls.startAnimation(animation); + } } if (Build.VERSION.SDK_INT >= 14) { int videoviewFlag = (Build.VERSION.SDK_INT >= 16) ? View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION : 0; @@ -347,6 +349,10 @@ public class VideoplayerActivity extends MediaplayerActivity { controls.setVisibility(View.GONE); } + private void hideVideoControls() { + hideVideoControls(true); + } + @Override protected int getContentViewResourceId() { return R.layout.videoplayer_activity; @@ -375,6 +381,8 @@ public class VideoplayerActivity extends MediaplayerActivity { public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.player_go_to_picture_in_picture) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + getSupportActionBar().hide(); + hideVideoControls(false); enterPictureInPictureMode(); } return true; -- cgit v1.2.3 From fa93fbc16d856bbfce827b3519e3dba5f20352a4 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 9 Jan 2018 09:00:25 +0100 Subject: Removed v14 compatibility code --- .../antennapod/activity/VideoplayerActivity.java | 30 ++++++++-------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'app') 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 4f28a789d..a755a4c2b 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -150,9 +150,7 @@ public class VideoplayerActivity extends MediaplayerActivity { if (Build.VERSION.SDK_INT >= 16) { videoview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); } - if (Build.VERSION.SDK_INT >= 14) { - videoOverlay.setFitsSystemWindows(true); - } + videoOverlay.setFitsSystemWindows(true); setupVideoControlsToggler(); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, @@ -325,9 +323,7 @@ public class VideoplayerActivity extends MediaplayerActivity { videoOverlay.startAnimation(animation); controls.startAnimation(animation); } - if (Build.VERSION.SDK_INT >= 14) { - videoview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); - } + videoview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); } @SuppressLint("NewApi") @@ -339,12 +335,11 @@ public class VideoplayerActivity extends MediaplayerActivity { controls.startAnimation(animation); } } - if (Build.VERSION.SDK_INT >= 14) { - int videoviewFlag = (Build.VERSION.SDK_INT >= 16) ? View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION : 0; - getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN - | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | videoviewFlag); - videoOverlay.setFitsSystemWindows(true); - } + int videoviewFlag = (Build.VERSION.SDK_INT >= 16) ? View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION : 0; + getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | videoviewFlag); + videoOverlay.setFitsSystemWindows(true); + videoOverlay.setVisibility(View.GONE); controls.setVisibility(View.GONE); } @@ -394,13 +389,10 @@ public class VideoplayerActivity extends MediaplayerActivity { public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) { - // This is only relevant for picture in picture - DisplayMetrics dm = getResources().getDisplayMetrics(); - float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenWidthDp, dm); - float py = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenHeightDp, dm); - videoview.setAvailableSize(px, py); - } + DisplayMetrics dm = getResources().getDisplayMetrics(); + float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenWidthDp, dm); + float py = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenHeightDp, dm); + videoview.setAvailableSize(px, py); } private static class VideoControlsHider extends Handler { -- cgit v1.2.3 From 629ad7e8506c8b36fd8ad27c44ecf9a621d6a5c0 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 9 Jan 2018 09:18:17 +0100 Subject: Fixed black padding when returning from pip onConfigurationChanged returned slightly wrong size --- .../danoeh/antennapod/activity/VideoplayerActivity.java | 15 +++++++++------ .../de/danoeh/antennapod/view/AspectRatioVideoView.java | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) (limited to 'app') 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 a755a4c2b..9a0843f9e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -17,9 +17,11 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.View; +import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.AnimationUtils; +import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.SeekBar; @@ -56,6 +58,7 @@ public class VideoplayerActivity extends MediaplayerActivity { private LinearLayout videoOverlay; private AspectRatioVideoView videoview; private ProgressBar progressIndicator; + private FrameLayout videoframe; @Override protected void chooseTheme() { @@ -142,9 +145,10 @@ public class VideoplayerActivity extends MediaplayerActivity { controls = (LinearLayout) findViewById(R.id.controls); videoOverlay = (LinearLayout) findViewById(R.id.overlay); videoview = (AspectRatioVideoView) findViewById(R.id.videoview); + videoframe = (FrameLayout) findViewById(R.id.videoframe); progressIndicator = (ProgressBar) findViewById(R.id.progressIndicator); videoview.getHolder().addCallback(surfaceHolderCallback); - findViewById(R.id.videoframe).setOnTouchListener(onVideoviewTouched); + videoframe.setOnTouchListener(onVideoviewTouched); videoOverlay.setOnTouchListener((view, motionEvent) -> true); // To suppress touches directly below the slider if (Build.VERSION.SDK_INT >= 16) { @@ -155,6 +159,9 @@ public class VideoplayerActivity extends MediaplayerActivity { setupVideoControlsToggler(); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); + + videoframe.getViewTreeObserver().addOnGlobalLayoutListener(() -> + videoview.setAvailableSize(videoframe.getWidth(), videoframe.getHeight())); } @Override @@ -388,11 +395,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - - DisplayMetrics dm = getResources().getDisplayMetrics(); - float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenWidthDp, dm); - float py = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenHeightDp, dm); - videoview.setAvailableSize(px, py); + videoframe.requestLayout(); } private static class VideoControlsHider extends Handler { diff --git a/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java b/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java index e9ec5491c..e79389fb3 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java +++ b/app/src/main/java/de/danoeh/antennapod/view/AspectRatioVideoView.java @@ -109,6 +109,7 @@ public class AspectRatioVideoView extends VideoView { public void setAvailableSize(float width, float height) { mAvailableWidth = width; mAvailableHeight = height; + requestLayout(); } } -- cgit v1.2.3 From 8852afc70d8afb4c4c0e52397bbbbcdb04cd852b Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 9 Jan 2018 09:27:41 +0100 Subject: Centered seekBar --- app/src/main/res/layout/videoplayer_activity.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'app') diff --git a/app/src/main/res/layout/videoplayer_activity.xml b/app/src/main/res/layout/videoplayer_activity.xml index 2d0b0cf56..10fbf8f49 100644 --- a/app/src/main/res/layout/videoplayer_activity.xml +++ b/app/src/main/res/layout/videoplayer_activity.xml @@ -104,6 +104,7 @@ android:layout_height="wrap_content" android:layout_toLeftOf="@+id/txtvLength" android:layout_toRightOf="@+id/txtvPosition" + android:layout_centerInParent="true" android:max="500" /> -- cgit v1.2.3 From 12c0939792160a534b28b9f4fdf0ee7615c90edc Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 9 Jan 2018 17:33:56 +0100 Subject: Do not open full activity from PiP mode --- .../java/de/danoeh/antennapod/activity/VideoplayerActivity.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app') 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 9a0843f9e..203c11e33 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -286,6 +286,13 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void onReloadNotification(int notificationCode) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInPictureInPictureMode()) { + if (notificationCode == PlaybackService.EXTRA_CODE_AUDIO + || notificationCode == PlaybackService.EXTRA_CODE_CAST) { + finish(); + } + return; + } if (notificationCode == PlaybackService.EXTRA_CODE_AUDIO) { Log.d(TAG, "ReloadNotification received, switching to Audioplayer now"); destroyingDueToReload = true; -- cgit v1.2.3 From 10f50ab264ae81862356b881a761c61562a69250 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 9 Jan 2018 18:16:30 +0100 Subject: Cleanup --- .../antennapod/activity/VideoplayerActivity.java | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'app') 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 203c11e33..90b4c72ea 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -2,22 +2,18 @@ package de.danoeh.antennapod.activity; import android.annotation.SuppressLint; import android.content.Intent; -import android.content.res.Configuration; import android.graphics.drawable.ColorDrawable; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.WindowCompat; -import android.util.DisplayMetrics; import android.util.Log; import android.util.Pair; -import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.View; -import android.view.ViewTreeObserver; import android.view.WindowManager; import android.view.animation.Animation; import android.view.animation.AnimationUtils; @@ -25,10 +21,6 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.SeekBar; - -import java.lang.ref.WeakReference; -import java.util.concurrent.atomic.AtomicBoolean; - import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.MediaType; import de.danoeh.antennapod.core.service.playback.PlaybackService; @@ -37,6 +29,9 @@ import de.danoeh.antennapod.core.util.playback.ExternalMedia; import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.view.AspectRatioVideoView; +import java.lang.ref.WeakReference; +import java.util.concurrent.atomic.AtomicBoolean; + /** * Activity for playing video files. */ @@ -137,7 +132,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void setupGUI() { - if(isSetup.getAndSet(true)) { + if (isSetup.getAndSet(true)) { return; } super.setupGUI(); @@ -399,12 +394,6 @@ public class VideoplayerActivity extends MediaplayerActivity { return super.onOptionsItemSelected(item); } - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - videoframe.requestLayout(); - } - private static class VideoControlsHider extends Handler { private static final int DELAY = 2500; @@ -417,7 +406,7 @@ public class VideoplayerActivity extends MediaplayerActivity { private final Runnable hideVideoControls = () -> { VideoplayerActivity vpa = activity.get(); - if(vpa == null) { + if (vpa == null) { return; } if (vpa.videoControlsShowing) { -- cgit v1.2.3 From 2831ec69d900d9ef28e736f748c16f3aa3501c22 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 10 Jan 2018 21:02:40 +0100 Subject: Fixed strange behavior when re-launching from PiP --- .../de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java b/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java index 1ab60ef61..83dd3fe9c 100644 --- a/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java +++ b/app/src/main/java/de/danoeh/antennapod/config/PlaybackServiceCallbacksImpl.java @@ -3,6 +3,7 @@ package de.danoeh.antennapod.config; import android.content.Context; import android.content.Intent; +import android.os.Build; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.AudioplayerActivity; import de.danoeh.antennapod.activity.CastplayerActivity; @@ -18,7 +19,11 @@ public class PlaybackServiceCallbacksImpl implements PlaybackServiceCallbacks { return new Intent(context, CastplayerActivity.class); } if (mediaType == MediaType.VIDEO) { - return new Intent(context, VideoplayerActivity.class); + Intent i = new Intent(context, VideoplayerActivity.class); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + i.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT); + } + return i; } else { return new Intent(context, AudioplayerActivity.class); } -- cgit v1.2.3 From 39c47da07dfe0ebb8f5fafcb52bfec44d15c4b24 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Thu, 11 Jan 2018 14:07:15 +0100 Subject: Fixed backstack when pressing up arrow --- app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java | 1 + 1 file changed, 1 insertion(+) (limited to 'app') 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 585b6cd85..37afe21be 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -382,6 +382,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements } else { startActivity(intent); } + finish(); return true; } else { if (media != null) { -- cgit v1.2.3 From 06113b089190f9a4ccfac685b17e38f03964a71e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 21 Jan 2018 12:47:04 +0100 Subject: Removed unused import --- app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java | 1 - 1 file changed, 1 deletion(-) (limited to 'app') 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 37afe21be..ffc33eb1a 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -38,7 +38,6 @@ import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; 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.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.DBWriter; -- cgit v1.2.3 From 878428f3a92926db6f38c889be6777e39d0d9f3e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 2 Apr 2018 22:18:35 +0200 Subject: Only stop videoControlsHider when actually stopping --- .../danoeh/antennapod/activity/VideoplayerActivity.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'app') 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 be5107d75..e23291e0d 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -99,10 +99,16 @@ public class VideoplayerActivity extends MediaplayerActivity { } @Override - protected void onPause() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N - || !isInPictureInPictureMode()) { + protected void onStop() { + super.onStop(); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N || !isInPictureInPictureMode()) { videoControlsHider.stop(); + } + } + + @Override + protected void onPause() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N || !isInPictureInPictureMode()) { if (controller != null && controller.getStatus() == PlayerStatus.PLAYING) { controller.pause(); } @@ -185,8 +191,7 @@ public class VideoplayerActivity extends MediaplayerActivity { private final View.OnTouchListener onVideoviewTouched = (v, event) -> { if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N - && isInPictureInPictureMode()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInPictureInPictureMode()) { return true; } videoControlsHider.stop(); -- cgit v1.2.3 From 1831430a6e47be1e34d2e8a4b977e79289ca7b2b Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 9 Apr 2018 00:04:02 +0200 Subject: Added checks for PiP support --- .../antennapod/activity/MediaplayerActivity.java | 20 +++++++++++++++++++- .../antennapod/activity/VideoplayerActivity.java | 10 +++++----- 2 files changed, 24 insertions(+), 6 deletions(-) (limited to 'app') 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 f3c0760f3..b51f45d93 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -4,6 +4,7 @@ import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PixelFormat; @@ -225,7 +226,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements @Override protected void onPause() { - if (Build.VERSION.SDK_INT < 26 || !isInPictureInPictureMode()) { + if (!supportsAndisInPictureInPictureMode()) { if (controller != null) { controller.reinitServiceIfPaused(); controller.pause(); @@ -907,6 +908,23 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements } } + /* package */ boolean supportsPictureInPicture() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + PackageManager packageManager = getApplicationContext().getPackageManager(); + return packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE); + } else { + return false; + } + } + + /* package */ boolean supportsAndisInPictureInPictureMode() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && supportsPictureInPicture()) { + return isInPictureInPictureMode(); + } else { + return false; + } + } + private void checkFavorite() { Playable playable = controller.getMedia(); if (playable != null && playable instanceof FeedMedia) { 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 e23291e0d..4ab934cc2 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -101,14 +101,14 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void onStop() { super.onStop(); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N || !isInPictureInPictureMode()) { + if (!supportsAndisInPictureInPictureMode()) { videoControlsHider.stop(); } } @Override protected void onPause() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N || !isInPictureInPictureMode()) { + if (!supportsAndisInPictureInPictureMode()) { if (controller != null && controller.getStatus() == PlayerStatus.PLAYING) { controller.pause(); } @@ -191,7 +191,7 @@ public class VideoplayerActivity extends MediaplayerActivity { private final View.OnTouchListener onVideoviewTouched = (v, event) -> { if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInPictureInPictureMode()) { + if (supportsAndisInPictureInPictureMode()) { return true; } videoControlsHider.stop(); @@ -381,7 +381,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (supportsPictureInPicture()) { menu.findItem(R.id.player_go_to_picture_in_picture).setVisible(true); } return true; @@ -390,7 +390,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.player_go_to_picture_in_picture) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (supportsPictureInPicture() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { getSupportActionBar().hide(); hideVideoControls(false); enterPictureInPictureMode(); -- cgit v1.2.3 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 --- .../antennapod/activity/MediaplayerActivity.java | 4 +-- .../antennapod/activity/VideoplayerActivity.java | 29 ++++++++++++++++------ app/src/main/res/xml/preferences.xml | 8 ++++++ 3 files changed, 31 insertions(+), 10 deletions(-) (limited to 'app') 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"/> + -- 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 --- .../antennapod/activity/MediaplayerActivity.java | 21 ++------------------- .../antennapod/activity/VideoplayerActivity.java | 13 +++++++------ .../preferences/PreferenceController.java | 7 +++++++ 3 files changed, 16 insertions(+), 25 deletions(-) (limited to 'app') 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 8431e7b2e..21e375435 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -4,7 +4,6 @@ import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; -import android.content.pm.PackageManager; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PixelFormat; @@ -47,6 +46,7 @@ import de.danoeh.antennapod.core.util.Flavors; import de.danoeh.antennapod.core.util.ShareUtils; import de.danoeh.antennapod.core.util.StorageUtils; import de.danoeh.antennapod.core.util.Supplier; +import de.danoeh.antennapod.core.util.gui.PictureInPictureUtil; import de.danoeh.antennapod.core.util.playback.MediaPlayerError; import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.core.util.playback.PlaybackController; @@ -226,7 +226,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements @Override protected void onPause() { - if (!compatIsInPictureInPictureMode()) { + if (!PictureInPictureUtil.isInPictureInPictureMode(this)) { if (controller != null) { controller.reinitServiceIfPaused(); controller.pause(); @@ -908,23 +908,6 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements } } - /* package */ boolean supportsPictureInPicture() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - PackageManager packageManager = getApplicationContext().getPackageManager(); - return packageManager.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE); - } else { - return false; - } - } - - /* package */ boolean compatIsInPictureInPictureMode() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && supportsPictureInPicture()) { - return isInPictureInPictureMode(); - } else { - return false; - } - } - private void checkFavorite() { Playable playable = controller.getMedia(); if (playable != null && playable instanceof FeedMedia) { 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 83635853a..999fd0714 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -27,6 +27,7 @@ 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.gui.PictureInPictureUtil; import de.danoeh.antennapod.core.util.playback.ExternalMedia; import de.danoeh.antennapod.core.util.playback.Playable; import de.danoeh.antennapod.view.AspectRatioVideoView; @@ -102,14 +103,14 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void onStop() { super.onStop(); - if (!compatIsInPictureInPictureMode()) { + if (!PictureInPictureUtil.isInPictureInPictureMode(this)) { videoControlsHider.stop(); } } @Override public void onUserLeaveHint () { - if (!compatIsInPictureInPictureMode() && UserPreferences.getVideoBackgroundBehavior() + if (!PictureInPictureUtil.isInPictureInPictureMode(this) && UserPreferences.getVideoBackgroundBehavior() == UserPreferences.VideoBackgroundBehavior.PICTURE_IN_PICTURE) { compatEnterPictureInPicture(); } @@ -117,7 +118,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void onPause() { - if (!compatIsInPictureInPictureMode()) { + if (!PictureInPictureUtil.isInPictureInPictureMode(this)) { if (controller != null && controller.getStatus() == PlayerStatus.PLAYING) { controller.pause(); } @@ -200,7 +201,7 @@ public class VideoplayerActivity extends MediaplayerActivity { private final View.OnTouchListener onVideoviewTouched = (v, event) -> { if (event.getAction() == MotionEvent.ACTION_DOWN) { - if (compatIsInPictureInPictureMode()) { + if (PictureInPictureUtil.isInPictureInPictureMode(this)) { return true; } videoControlsHider.stop(); @@ -390,7 +391,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - if (supportsPictureInPicture()) { + if (PictureInPictureUtil.supportsPictureInPicture(this)) { menu.findItem(R.id.player_go_to_picture_in_picture).setVisible(true); } return true; @@ -406,7 +407,7 @@ public class VideoplayerActivity extends MediaplayerActivity { } private void compatEnterPictureInPicture() { - if (supportsPictureInPicture() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + if (PictureInPictureUtil.supportsPictureInPicture(this) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { getSupportActionBar().hide(); hideVideoControls(false); enterPictureInPictureMode(); diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index 2c7d738dd..0e9cf73e0 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -38,8 +38,10 @@ import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; +import com.afollestad.materialdialogs.prefs.MaterialListPreference; import de.danoeh.antennapod.activity.ImportExportActivity; import de.danoeh.antennapod.activity.OpmlImportFromPathActivity; +import de.danoeh.antennapod.core.util.gui.PictureInPictureUtil; import org.apache.commons.lang3.ArrayUtils; import java.io.File; @@ -426,6 +428,11 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc return false; } ); + if (!PictureInPictureUtil.supportsPictureInPicture(activity)) { + MaterialListPreference behaviour = (MaterialListPreference) ui.findPreference(UserPreferences.PREF_VIDEO_BEHAVIOR); + behaviour.setEntries(R.array.video_background_behavior_options_without_pip); + behaviour.setEntryValues(R.array.video_background_behavior_values_without_pip); + } ui.findPreference(PREF_PROXY).setOnPreferenceClickListener(preference -> { ProxyDialog dialog = new ProxyDialog(ui.getActivity()); dialog.createDialog().show(); -- cgit v1.2.3 From b5a8fe0a1b3b38f8980d4c6e9e65d568dc70a55e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 9 Apr 2018 22:30:43 +0200 Subject: Using compat method --- .../main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') 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 999fd0714..832386185 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -297,7 +297,7 @@ public class VideoplayerActivity extends MediaplayerActivity { @Override protected void onReloadNotification(int notificationCode) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && isInPictureInPictureMode()) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && PictureInPictureUtil.isInPictureInPictureMode(this)) { if (notificationCode == PlaybackService.EXTRA_CODE_AUDIO || notificationCode == PlaybackService.EXTRA_CODE_CAST) { finish(); -- 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 --- .../main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'app') 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 832386185..733f39b63 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java @@ -288,7 +288,9 @@ public class VideoplayerActivity extends MediaplayerActivity { public void surfaceDestroyed(SurfaceHolder holder) { Log.d(TAG, "Videosurface was destroyed"); videoSurfaceCreated = false; - if (controller != null && !destroyingDueToReload) { + if (controller != null && !destroyingDueToReload + && UserPreferences.getVideoBackgroundBehavior() + != UserPreferences.VideoBackgroundBehavior.CONTINUE_PLAYING) { controller.notifyVideoSurfaceAbandoned(); } } -- cgit v1.2.3