From 3c1b737b242bb31edcfb56151cc8634629011306 Mon Sep 17 00:00:00 2001 From: Duncan McNamara Date: Tue, 7 Oct 2025 17:54:31 +0200 Subject: [PATCH] Fix resume audio playqueue from widget --- .../src/main/java/org/videolan/tools/Settings.kt | 1 + .../src/org/videolan/vlc/PlaybackService.kt | 11 ++++++++++- .../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 ff0abf2e5..6d69367de 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 f7711ff68..ed21c1abc 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 9ec4c46f3..128fda1f0 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, "")