[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