From da58b72f9d3025cb5b9a3486bf047d72f0ac194f Mon Sep 17 00:00:00 2001
From: Kai <git@seaoflaurels.com>
Date: Tue, 14 Jan 2025 11:36:37 -0600
Subject: [PATCH] add background playback support for videos without an
 explicit audio source

Changelog: changed
---
 .../mainactivity/main/VideoDetailView.kt      | 24 +++++++++----------
 .../views/video/FutoVideoPlayerBase.kt        |  7 ++++++
 2 files changed, 18 insertions(+), 13 deletions(-)

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 bc606582..c20ed9af 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
@@ -870,20 +870,18 @@ class VideoDetailView : ConstraintLayout {
                     }
                     _slideUpOverlay?.hide();
                 } else null,
-            if(!isLimitedVersion)
-                RoundButton(context, R.drawable.ic_screen_share, context.getString(R.string.background), TAG_BACKGROUND) {
-                    if(!allowBackground) {
-                        _player.switchToAudioMode();
-                        allowBackground = true;
-                        it.text.text = resources.getString(R.string.background_revert);
-                    }
-                    else {
-                        _player.switchToVideoMode();
-                        allowBackground = false;
-                        it.text.text = resources.getString(R.string.background);
-                    }
-                    _slideUpOverlay?.hide();
+            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 (!allowBackground) {
+                    _player.switchToAudioMode();
+                    allowBackground = true;
+                    it.text.text = resources.getString(R.string.background_revert);
+                } else {
+                    _player.switchToVideoMode();
+                    allowBackground = false;
+                    it.text.text = resources.getString(R.string.background);
                 }
+                _slideUpOverlay?.hide();
+            }
             else null,
             if(!isLimitedVersion)
                 RoundButton(context, R.drawable.ic_download, context.getString(R.string.download), TAG_DOWNLOAD) {
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 9ca559ca..6050f5c1 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
@@ -298,6 +298,12 @@ abstract class FutoVideoPlayerBase : RelativeLayout {
             builder = builder.setMaxAudioBitrate(_targetTrackAudioBitrate);
         }
 
+        builder = if (isAudioMode) {
+            builder.setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, true)
+        } else {
+            builder.setTrackTypeDisabled(C.TRACK_TYPE_VIDEO, false)
+        }
+
         val trackSelector = exoPlayer?.player?.trackSelector;
         if(trackSelector != null) {
             trackSelector.parameters = builder.build();
@@ -737,6 +743,7 @@ abstract class FutoVideoPlayerBase : RelativeLayout {
         val sourceAudio = _lastAudioMediaSource;
         val sourceSubs = _lastSubtitleMediaSource;
 
+        updateTrackSelector()
 
         beforeSourceChanged();
 
-- 
GitLab