mirror of
https://gitlab.futo.org/videostreaming/grayjay.git
synced 2025-05-01 23:24:34 +02:00
- fix PiP when player closed
- improve PiP speed on Android 12+
This commit is contained in:
parent
04c0679930
commit
3d863b9c89
@ -269,6 +269,7 @@ class VideoDetailFragment() : MainFragment() {
|
|||||||
}
|
}
|
||||||
fun closeVideoDetails() {
|
fun closeVideoDetails() {
|
||||||
Logger.i(TAG, "closeVideoDetails()")
|
Logger.i(TAG, "closeVideoDetails()")
|
||||||
|
_viewDetail?.onPlayChanged?.emit(false)
|
||||||
state = State.CLOSED;
|
state = State.CLOSED;
|
||||||
_viewDetail?.onStop();
|
_viewDetail?.onStop();
|
||||||
close();
|
close();
|
||||||
@ -294,12 +295,10 @@ class VideoDetailFragment() : MainFragment() {
|
|||||||
};
|
};
|
||||||
viewDetail.onMaximize.subscribe { maximizeVideoDetail(it) };
|
viewDetail.onMaximize.subscribe { maximizeVideoDetail(it) };
|
||||||
viewDetail.onPlayChanged.subscribe {
|
viewDetail.onPlayChanged.subscribe {
|
||||||
if(isInPictureInPicture) {
|
val params = _viewDetail?.getPictureInPictureParams(it)
|
||||||
val params = _viewDetail?.getPictureInPictureParams();
|
|
||||||
if (params != null)
|
if (params != null)
|
||||||
activity?.setPictureInPictureParams(params);
|
activity?.setPictureInPictureParams(params)
|
||||||
}
|
}
|
||||||
};
|
|
||||||
viewDetail.onEnterPictureInPicture.subscribe {
|
viewDetail.onEnterPictureInPicture.subscribe {
|
||||||
Logger.i(TAG, "onEnterPictureInPicture")
|
Logger.i(TAG, "onEnterPictureInPicture")
|
||||||
isInPictureInPicture = true;
|
isInPictureInPicture = true;
|
||||||
@ -367,10 +366,10 @@ class VideoDetailFragment() : MainFragment() {
|
|||||||
val viewDetail = _viewDetail;
|
val viewDetail = _viewDetail;
|
||||||
Logger.i(TAG, "onUserLeaveHint preventPictureInPicture=${viewDetail?.preventPictureInPicture} isCasting=${StateCasting.instance.isCasting} isBackgroundPictureInPicture=${Settings.instance.playback.isBackgroundPictureInPicture()} allowBackground=${viewDetail?.allowBackground}");
|
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;
|
_leavingPiP = false;
|
||||||
|
|
||||||
val params = _viewDetail?.getPictureInPictureParams();
|
val params = _viewDetail?.getPictureInPictureParams(true);
|
||||||
if(params != null) {
|
if(params != null) {
|
||||||
Logger.i(TAG, "enterPictureInPictureMode")
|
Logger.i(TAG, "enterPictureInPictureMode")
|
||||||
activity?.enterPictureInPictureMode(params);
|
activity?.enterPictureInPictureMode(params);
|
||||||
@ -379,7 +378,7 @@ class VideoDetailFragment() : MainFragment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun forcePictureInPicture() {
|
fun forcePictureInPicture() {
|
||||||
val params = _viewDetail?.getPictureInPictureParams();
|
val params = _viewDetail?.getPictureInPictureParams(true);
|
||||||
if(params != null)
|
if(params != null)
|
||||||
activity?.enterPictureInPictureMode(params);
|
activity?.enterPictureInPictureMode(params);
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import android.graphics.drawable.BitmapDrawable
|
|||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.graphics.drawable.Icon
|
import android.graphics.drawable.Icon
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.os.Build
|
||||||
import android.support.v4.media.session.PlaybackStateCompat
|
import android.support.v4.media.session.PlaybackStateCompat
|
||||||
import android.text.Spanned
|
import android.text.Spanned
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
@ -2615,7 +2616,7 @@ class VideoDetailView(fragment: VideoDetailFragment, inflater: LayoutInflater) :
|
|||||||
fun handleLeavePictureInPicture() {
|
fun handleLeavePictureInPicture() {
|
||||||
Logger.i(TAG, "handleLeavePictureInPicture")
|
Logger.i(TAG, "handleLeavePictureInPicture")
|
||||||
}
|
}
|
||||||
fun getPictureInPictureParams() : PictureInPictureParams {
|
fun getPictureInPictureParams(isPlaying: Boolean) : PictureInPictureParams {
|
||||||
var videoSourceWidth = _player.exoPlayer?.player?.videoSize?.width ?: 0;
|
var videoSourceWidth = _player.exoPlayer?.player?.videoSize?.width ?: 0;
|
||||||
var videoSourceHeight = _player.exoPlayer?.player?.videoSize?.height ?: 0;
|
var videoSourceHeight = _player.exoPlayer?.player?.videoSize?.height ?: 0;
|
||||||
|
|
||||||
@ -2641,11 +2642,16 @@ class VideoDetailView(fragment: VideoDetailFragment, inflater: LayoutInflater) :
|
|||||||
else
|
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));
|
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))
|
.setAspectRatio(Rational(videoSourceWidth, videoSourceHeight))
|
||||||
.setSourceRectHint(r)
|
.setSourceRectHint(r)
|
||||||
.setActions(listOf(playpauseAction))
|
.setActions(listOf(playpauseAction))
|
||||||
.build();
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
params.setAutoEnterEnabled(isPlaying)
|
||||||
|
}
|
||||||
|
|
||||||
|
return params.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
//Other
|
//Other
|
||||||
|
Loading…
x
Reference in New Issue
Block a user