[Android] Fix resume audio playqueue from widget

Duncan McNamara git at videolan.org
Wed Oct 8 11:37:37 UTC 2025


vlc-android | branch: master | Duncan McNamara <dcn.mcnamara at gmail.com> | Tue Oct  7 17:54:31 2025 +0200| [3c1b737b242bb31edcfb56151cc8634629011306] | committer: Duncan McNamara

Fix resume audio playqueue from widget

> https://code.videolan.org/videolan/vlc-android/commit/3c1b737b242bb31edcfb56151cc8634629011306
---

 .../tools/src/main/java/org/videolan/tools/Settings.kt        |  1 +
 .../vlc-android/src/org/videolan/vlc/PlaybackService.kt       | 11 ++++++++++-
 .../vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt |  3 +++
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/application/tools/src/main/java/org/videolan/tools/Settings.kt b/application/tools/src/main/java/org/videolan/tools/Settings.kt
index ff0abf2e5c..6d69367de9 100644
--- a/application/tools/src/main/java/org/videolan/tools/Settings.kt
+++ b/application/tools/src/main/java/org/videolan/tools/Settings.kt
@@ -147,6 +147,7 @@ const val KEY_CURRENT_MEDIA_RESUME = "current_media_resume"
 const val KEY_CURRENT_AUDIO_RESUME_TITLE = "key_current_audio_resume_title"
 const val KEY_CURRENT_AUDIO_RESUME_ARTIST = "key_current_audio_resume_artist"
 const val KEY_CURRENT_AUDIO_RESUME_THUMB = "key_current_audio_resume_thumb"
+const val KEY_CURRENT_MEDIA_IS_AUDIO = "key_current_media_is_audio"
 
 // AUDIO category
 const val KEY_AUDIO_CURRENT_TAB = "key_audio_current_tab"
diff --git a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
index f7711ff688..ed21c1abc0 100644
--- a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
+++ b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
@@ -147,6 +147,7 @@ import org.videolan.tools.KEY_ANDROID_AUTO_QUEUE_INFO_POS_VAL
 import org.videolan.tools.KEY_ANDROID_AUTO_SUBTITLE_SCALE_VAL
 import org.videolan.tools.KEY_ANDROID_AUTO_TITLE_SCALE_VAL
 import org.videolan.tools.KEY_AUDIO_TASK_REMOVED
+import org.videolan.tools.KEY_CURRENT_MEDIA_IS_AUDIO
 import org.videolan.tools.KEY_ENABLE_HEADSET_DETECTION
 import org.videolan.tools.KEY_ENABLE_PLAY_ON_HEADSET_INSERTION
 import org.videolan.tools.KEY_METERED_CONNECTION
@@ -1454,7 +1455,15 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
         if (!AndroidDevices.isAndroidTv) {
             // If playback in background is enabled it should load the last media of any type
             // not only audio
-            val playlistType = if (settings.getString(KEY_VIDEO_APP_SWITCH, "0") == "1") PLAYLIST_TYPE_ALL else PLAYLIST_TYPE_AUDIO
+            // If playback in background isn't enabled, then only audio should be played whether the
+            // last media played is audio or not
+            val videoPlaybackInBackground = settings.getString(KEY_VIDEO_APP_SWITCH, "0") == "1"
+            val lastMediaPlayedIsAudio = settings.getBoolean(KEY_CURRENT_MEDIA_IS_AUDIO, false)
+
+            val playlistType = if (lastMediaPlayedIsAudio || !videoPlaybackInBackground)
+                PLAYLIST_TYPE_AUDIO
+            else
+                PLAYLIST_TYPE_ALL
             loadLastPlaylist(playlistType)
         }
     }
diff --git a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
index 9ec4c46f3e..128fda1f05 100644
--- a/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
+++ b/application/vlc-android/src/org/videolan/vlc/media/PlaylistManager.kt
@@ -54,6 +54,7 @@ import org.videolan.tools.KEY_CURRENT_AUDIO_RESUME_ARTIST
 import org.videolan.tools.KEY_CURRENT_AUDIO_RESUME_THUMB
 import org.videolan.tools.KEY_CURRENT_AUDIO_RESUME_TITLE
 import org.videolan.tools.KEY_CURRENT_MEDIA
+import org.videolan.tools.KEY_CURRENT_MEDIA_IS_AUDIO
 import org.videolan.tools.KEY_CURRENT_MEDIA_RESUME
 import org.videolan.tools.KEY_INCOGNITO
 import org.videolan.tools.KEY_INCOGNITO_PLAYBACK_SPEED_AUDIO_GLOBAL_VALUE
@@ -777,6 +778,8 @@ class PlaylistManager(val service: PlaybackService) : MediaWrapperList.EventList
         if (settings.getBoolean(KEY_INCOGNITO, false)) return
         val media = getCurrentMedia() ?: return
         val isAudio = isAudioList() || forceVideo
+        settings.putSingle(KEY_CURRENT_MEDIA_IS_AUDIO, isAudio)
+
         if (media.uri.scheme.isSchemeFD()) {
             if (isAudio) {
                 settings.putSingle(KEY_CURRENT_AUDIO_RESUME_TITLE, "")



More information about the Android mailing list