- fix PiP when player closed

- improve PiP speed on Android 12+
This commit is contained in:
Kai 2024-12-17 14:46:18 -06:00
parent 04c0679930
commit 3d863b9c89
No known key found for this signature in database
2 changed files with 17 additions and 12 deletions

View file

@ -269,6 +269,7 @@ class VideoDetailFragment() : MainFragment() {
}
fun closeVideoDetails() {
Logger.i(TAG, "closeVideoDetails()")
_viewDetail?.onPlayChanged?.emit(false)
state = State.CLOSED;
_viewDetail?.onStop();
close();
@ -294,12 +295,10 @@ class VideoDetailFragment() : MainFragment() {
};
viewDetail.onMaximize.subscribe { maximizeVideoDetail(it) };
viewDetail.onPlayChanged.subscribe {
if(isInPictureInPicture) {
val params = _viewDetail?.getPictureInPictureParams();
if (params != null)
activity?.setPictureInPictureParams(params);
}
};
val params = _viewDetail?.getPictureInPictureParams(it)
if (params != null)
activity?.setPictureInPictureParams(params)
}
viewDetail.onEnterPictureInPicture.subscribe {
Logger.i(TAG, "onEnterPictureInPicture")
isInPictureInPicture = true;
@ -367,10 +366,10 @@ class VideoDetailFragment() : MainFragment() {
val viewDetail = _viewDetail;
Logger.i(TAG, "onUserLeaveHint preventPictureInPicture=${viewDetail?.preventPictureInPicture} isCasting=${StateCasting.instance.isCasting} isBackgroundPictureInPicture=${Settings.instance.playback.isBackgroundPictureInPicture()} allowBackground=${viewDetail?.allowBackground}");
if(viewDetail?.preventPictureInPicture == false && !StateCasting.instance.isCasting && Settings.instance.playback.isBackgroundPictureInPicture() && !viewDetail.allowBackground) {
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.S && viewDetail?.preventPictureInPicture == false && !StateCasting.instance.isCasting && Settings.instance.playback.isBackgroundPictureInPicture() && !viewDetail.allowBackground) {
_leavingPiP = false;
val params = _viewDetail?.getPictureInPictureParams();
val params = _viewDetail?.getPictureInPictureParams(true);
if(params != null) {
Logger.i(TAG, "enterPictureInPictureMode")
activity?.enterPictureInPictureMode(params);
@ -379,7 +378,7 @@ class VideoDetailFragment() : MainFragment() {
}
fun forcePictureInPicture() {
val params = _viewDetail?.getPictureInPictureParams();
val params = _viewDetail?.getPictureInPictureParams(true);
if(params != null)
activity?.enterPictureInPictureMode(params);
}

View file

@ -12,6 +12,7 @@ import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
import android.graphics.drawable.Icon
import android.net.Uri
import android.os.Build
import android.support.v4.media.session.PlaybackStateCompat
import android.text.Spanned
import android.util.Log
@ -2615,7 +2616,7 @@ class VideoDetailView(fragment: VideoDetailFragment, inflater: LayoutInflater) :
fun handleLeavePictureInPicture() {
Logger.i(TAG, "handleLeavePictureInPicture")
}
fun getPictureInPictureParams() : PictureInPictureParams {
fun getPictureInPictureParams(isPlaying: Boolean) : PictureInPictureParams {
var videoSourceWidth = _player.exoPlayer?.player?.videoSize?.width ?: 0;
var videoSourceHeight = _player.exoPlayer?.player?.videoSize?.height ?: 0;
@ -2641,11 +2642,16 @@ class VideoDetailView(fragment: VideoDetailFragment, inflater: LayoutInflater) :
else
RemoteAction(Icon.createWithResource(context, R.drawable.ic_play_notif), context.getString(R.string.play), context.getString(R.string.resumes_the_video), MediaControlReceiver.getPlayIntent(context, 6));
return PictureInPictureParams.Builder()
val params = PictureInPictureParams.Builder()
.setAspectRatio(Rational(videoSourceWidth, videoSourceHeight))
.setSourceRectHint(r)
.setActions(listOf(playpauseAction))
.build();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
params.setAutoEnterEnabled(isPlaying)
}
return params.build()
}
//Other