casting: apply a0f4cc76

This commit is contained in:
Marcus Hanestad 2025-09-04 13:17:59 +02:00
commit b562e66b8b
2 changed files with 15 additions and 16 deletions

View file

@ -438,7 +438,7 @@ class VideoDetailFragment() : MainFragment() {
fun onUserLeaveHint() { fun onUserLeaveHint() {
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?.isAudioOnlyUserAction}");
if (viewDetail === null) { if (viewDetail === null) {
return return
@ -447,7 +447,7 @@ class VideoDetailFragment() : MainFragment() {
if (viewDetail.shouldEnterPictureInPicture) { if (viewDetail.shouldEnterPictureInPicture) {
_leavingPiP = false _leavingPiP = false
} }
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.S && 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.isAudioOnlyUserAction) {
val params = _viewDetail?.getPictureInPictureParams(); val params = _viewDetail?.getPictureInPictureParams();
if(params != null) { if(params != null) {
Logger.i(TAG, "enterPictureInPictureMode") Logger.i(TAG, "enterPictureInPictureMode")
@ -527,7 +527,7 @@ class VideoDetailFragment() : MainFragment() {
private fun stopIfRequired() { private fun stopIfRequired() {
var shouldStop = true; var shouldStop = true;
if (_viewDetail?.allowBackground == true) { if (_viewDetail?.isAudioOnlyUserAction == true) {
shouldStop = false; shouldStop = false;
} else if (Settings.instance.playback.isBackgroundPictureInPicture() && !_leavingPiP) { } else if (Settings.instance.playback.isBackgroundPictureInPicture() && !_leavingPiP) {
shouldStop = false; shouldStop = false;

View file

@ -324,7 +324,7 @@ class VideoDetailView : ConstraintLayout {
val onEnterPictureInPicture = Event0(); val onEnterPictureInPicture = Event0();
val onVideoChanged = Event2<Int, Int>() val onVideoChanged = Event2<Int, Int>()
var allowBackground: Boolean = false var isAudioOnlyUserAction: Boolean = false
private set(value) { private set(value) {
if (field != value) { if (field != value) {
field = value field = value
@ -336,7 +336,7 @@ class VideoDetailView : ConstraintLayout {
get() = !preventPictureInPicture && get() = !preventPictureInPicture &&
!StateCasting.instance.isCasting && !StateCasting.instance.isCasting &&
Settings.instance.playback.isBackgroundPictureInPicture() && Settings.instance.playback.isBackgroundPictureInPicture() &&
!allowBackground && !isAudioOnlyUserAction &&
isPlaying isPlaying
val onShouldEnterPictureInPictureChanged = Event0(); val onShouldEnterPictureInPictureChanged = Event0();
@ -759,7 +759,7 @@ class VideoDetailView : ConstraintLayout {
MediaControlReceiver.onBackgroundReceived.subscribe(this) { MediaControlReceiver.onBackgroundReceived.subscribe(this) {
Logger.i(TAG, "MediaControlReceiver.onBackgroundReceived") Logger.i(TAG, "MediaControlReceiver.onBackgroundReceived")
_player.switchToAudioMode(video); _player.switchToAudioMode(video);
allowBackground = true; isAudioOnlyUserAction = true;
StateApp.instance.contextOrNull?.let { StateApp.instance.contextOrNull?.let {
try { try {
if (it is MainActivity) { if (it is MainActivity) {
@ -1004,14 +1004,14 @@ class VideoDetailView : ConstraintLayout {
} }
_slideUpOverlay?.hide(); _slideUpOverlay?.hide();
} else null, } else null,
if (!isLimitedVersion) RoundButton(context, R.drawable.ic_screen_share, if (allowBackground) context.getString(R.string.background_revert) else context.getString(R.string.background), TAG_BACKGROUND) { if (!isLimitedVersion) RoundButton(context, R.drawable.ic_screen_share, if (isAudioOnlyUserAction) context.getString(R.string.background_revert) else context.getString(R.string.background), TAG_BACKGROUND) {
if (!allowBackground) { if (!isAudioOnlyUserAction) {
_player.switchToAudioMode(video); _player.switchToAudioMode(video);
allowBackground = true; isAudioOnlyUserAction = true;
it.text.text = resources.getString(R.string.background_revert); it.text.text = resources.getString(R.string.background_revert);
} else { } else {
_player.switchToVideoMode(); _player.switchToVideoMode();
allowBackground = false; isAudioOnlyUserAction = false;
it.text.text = resources.getString(R.string.background); it.text.text = resources.getString(R.string.background);
} }
_slideUpOverlay?.hide(); _slideUpOverlay?.hide();
@ -1151,9 +1151,9 @@ class VideoDetailView : ConstraintLayout {
if(_player.isAudioMode) { if(_player.isAudioMode) {
//Requested behavior to leave it in audio mode. leaving it commented if it causes issues, revert? //Requested behavior to leave it in audio mode. leaving it commented if it causes issues, revert?
if(!allowBackground) { if(!isAudioOnlyUserAction) {
_player.switchToVideoMode(); _player.switchToVideoMode();
allowBackground = false; isAudioOnlyUserAction = false;
_buttonPins.getButtonByTag(TAG_BACKGROUND)?.text?.text = resources.getString(R.string.background); _buttonPins.getButtonByTag(TAG_BACKGROUND)?.text?.text = resources.getString(R.string.background);
} }
} }
@ -1171,7 +1171,7 @@ class VideoDetailView : ConstraintLayout {
if (StateCasting.instance.isCasting) if (StateCasting.instance.isCasting)
return; return;
if(allowBackground) if(isAudioOnlyUserAction)
StatePlayer.instance.startOrUpdateMediaSession(context, video); StatePlayer.instance.startOrUpdateMediaSession(context, video);
else { else {
when (Settings.instance.playback.backgroundPlay) { when (Settings.instance.playback.backgroundPlay) {
@ -1179,7 +1179,6 @@ class VideoDetailView : ConstraintLayout {
1 -> { 1 -> {
if(!(video?.isLive ?: false)) { if(!(video?.isLive ?: false)) {
_player.switchToAudioMode(video); _player.switchToAudioMode(video);
allowBackground = true;
} }
StatePlayer.instance.startOrUpdateMediaSession(context, video); StatePlayer.instance.startOrUpdateMediaSession(context, video);
} }
@ -1965,10 +1964,10 @@ class VideoDetailView : ConstraintLayout {
if (isLimitedVersion && _player.isAudioMode) { if (isLimitedVersion && _player.isAudioMode) {
_player.switchToVideoMode() _player.switchToVideoMode()
allowBackground = false; isAudioOnlyUserAction = false;
} else { } else {
val thumbnail = video.thumbnails.getHQThumbnail(); val thumbnail = video.thumbnails.getHQThumbnail();
if ((videoSource == null || _player.isAudioMode) && !thumbnail.isNullOrBlank()) if ((videoSource == null) && !thumbnail.isNullOrBlank()) // || _player.isAudioMode
Glide.with(context).asBitmap().load(thumbnail) Glide.with(context).asBitmap().load(thumbnail)
.into(object: CustomTarget<Bitmap>() { .into(object: CustomTarget<Bitmap>() {
override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) { override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {