From 8202513993aca4fdd4e720331a6167648243a6fa Mon Sep 17 00:00:00 2001 From: Kai Date: Thu, 22 May 2025 12:12:34 -0500 Subject: [PATCH] fix stutter when switching to background Changelog: changed --- .../main/java/com/futo/platformplayer/Settings.kt | 5 ----- .../fragment/mainactivity/main/VideoDetailView.kt | 2 +- .../views/video/FutoVideoPlayerBase.kt | 14 ++++++++++++-- app/src/main/res/values/strings.xml | 1 - 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/Settings.kt b/app/src/main/java/com/futo/platformplayer/Settings.kt index 7f827f66..cc70191a 100644 --- a/app/src/main/java/com/futo/platformplayer/Settings.kt +++ b/app/src/main/java/com/futo/platformplayer/Settings.kt @@ -467,11 +467,6 @@ class Settings : FragmentedStorageFileJson() { @FormField(R.string.live_chat_webview, FieldForm.TOGGLE, R.string.use_the_live_chat_web_window_when_available_over_native_implementation, 9) var useLiveChatWindow: Boolean = true; - - - @FormField(R.string.background_switch_audio, FieldForm.TOGGLE, R.string.background_switch_audio_description, 10) - var backgroundSwitchToAudio: Boolean = true; - @FormField(R.string.restart_after_audio_focus_loss, FieldForm.DROPDOWN, R.string.restart_playback_when_gaining_audio_focus_after_a_loss, 11) @DropdownFieldOptionsId(R.array.restart_playback_after_loss) var restartPlaybackAfterLoss: Int = 1; diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt index d1a3e41e..901a4898 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/VideoDetailView.kt @@ -1104,7 +1104,7 @@ class VideoDetailView : ConstraintLayout { when (Settings.instance.playback.backgroundPlay) { 0 -> handlePause(); 1 -> { - if(!(video?.isLive ?: false) && Settings.instance.playback.backgroundSwitchToAudio) + if(!(video?.isLive ?: false)) _player.switchToAudioMode(); StatePlayer.instance.startOrUpdateMediaSession(context, video); } diff --git a/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt b/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt index c872ca02..60c5dbf2 100644 --- a/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt +++ b/app/src/main/java/com/futo/platformplayer/views/video/FutoVideoPlayerBase.kt @@ -252,12 +252,22 @@ abstract class FutoVideoPlayerBase : RelativeLayout { fun switchToVideoMode() { Logger.i(TAG, "Switching to Video Mode"); isAudioMode = false; - loadSelectedSources(playing, true); + val player = exoPlayer ?: return + player.player.trackSelectionParameters = + player.player.trackSelectionParameters + .buildUpon() + .setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, isAudioMode) + .build() } fun switchToAudioMode() { Logger.i(TAG, "Switching to Audio Mode"); isAudioMode = true; - loadSelectedSources(playing, true); + val player = exoPlayer ?: return + player.player.trackSelectionParameters = + player.player.trackSelectionParameters + .buildUpon() + .setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, isAudioMode) + .build() } fun seekTo(ms: Long) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f81f1642..85445796 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -427,7 +427,6 @@ Seek duration Fast-Forward / Fast-Rewind duration Switch to Audio in Background - Optimize bandwidth usage by switching to audio-only stream in background if available, may cause stutter Groups Show Subscription Groups Use Subscription Exchange (Experimental)