[Android] Prevent pausing the playback when using the resume app shortcut

Nicolas Pomepuy git at videolan.org
Mon Feb 17 13:22:28 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Mon Feb 17 11:01:51 2025 +0100| [e7ab536fe973c737933d9d69bdde01a2cf7ac209] | committer: Nicolas Pomepuy

Prevent pausing the playback when using the resume app shortcut

Fixes #3150

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

 .../src/main/java/org/videolan/resources/Constants.kt        |  1 +
 .../vlc-android/src/org/videolan/vlc/PlaybackService.kt      | 12 +++++++++---
 .../vlc-android/src/org/videolan/vlc/StartActivity.kt        |  2 +-
 3 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/application/resources/src/main/java/org/videolan/resources/Constants.kt b/application/resources/src/main/java/org/videolan/resources/Constants.kt
index 0f7812e368..4f5310d923 100644
--- a/application/resources/src/main/java/org/videolan/resources/Constants.kt
+++ b/application/resources/src/main/java/org/videolan/resources/Constants.kt
@@ -29,6 +29,7 @@ const val EXTRA_PARSE = "extra_parse"
 const val EXTRA_TARGET = "extra_parse"
 const val EXTRA_FOR_ESPRESSO = "extra_for_espresso"
 const val EXTRA_REMOVE_DEVICE = "extra_remove_device"
+const val EXTRA_PLAY_ONLY = "extra_play_only"
 
 //UI Navigation
 const val ID_VIDEO = "video"
diff --git a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
index f9a609bdcb..0939cb400a 100644
--- a/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
+++ b/application/vlc-android/src/org/videolan/vlc/PlaybackService.kt
@@ -124,6 +124,7 @@ import org.videolan.resources.CUSTOM_ACTION_SHUFFLE
 import org.videolan.resources.CUSTOM_ACTION_SPEED
 import org.videolan.resources.DRIVING_MODE_APP_PKG
 import org.videolan.resources.EXTRA_CUSTOM_ACTION_ID
+import org.videolan.resources.EXTRA_PLAY_ONLY
 import org.videolan.resources.EXTRA_SEARCH_BUNDLE
 import org.videolan.resources.EXTRA_SEEK_DELAY
 import org.videolan.resources.PLAYBACK_SLOT_RESERVATION_SKIP_TO_NEXT
@@ -855,7 +856,10 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
             ACTION_REMOTE_PLAY,
             ACTION_REMOTE_LAST_PLAYLIST -> {
                 if (playlistManager.hasCurrentMedia()) {
-                    if (isPlaying) pause()
+                    if (intent.getBooleanExtra(EXTRA_PLAY_ONLY, false)) {
+                        if (!isPlaying)
+                            play()
+                    } else if (isPlaying) pause()
                     else play()
                 } else loadLastAudioPlaylist()
             }
@@ -2001,8 +2005,10 @@ class PlaybackService : MediaBrowserServiceCompat(), LifecycleOwner, CoroutineSc
             context.launchForeground(serviceIntent)
         }
 
-        fun loadLastAudio(context: Context) {
-            val i = Intent(ACTION_REMOTE_LAST_PLAYLIST, null, context, PlaybackService::class.java)
+        fun loadLastAudio(context: Context, playOnly: Boolean = false) {
+            val i = Intent(ACTION_REMOTE_LAST_PLAYLIST, null, context, PlaybackService::class.java).apply {
+                if (playOnly) putExtra(EXTRA_PLAY_ONLY, true)
+            }
             context.launchForeground(i)
         }
 
diff --git a/application/vlc-android/src/org/videolan/vlc/StartActivity.kt b/application/vlc-android/src/org/videolan/vlc/StartActivity.kt
index 4571b7dfa3..c7f7c9439a 100644
--- a/application/vlc-android/src/org/videolan/vlc/StartActivity.kt
+++ b/application/vlc-android/src/org/videolan/vlc/StartActivity.kt
@@ -231,7 +231,7 @@ class StartActivity : FragmentActivity() {
                 val target = idFromShortcut
                 val service = PlaybackService.instance
                 if (target == R.id.ml_menu_last_playlist) {
-                    PlaybackService.loadLastAudio(this)
+                    PlaybackService.loadLastAudio(this, true)
                     startApplication(tv, firstRun, upgrade, R.id.nav_audio, removeOldDevices)
                 } else if (service != null && service.isInPiPMode.value == true) {
                     service.isInPiPMode.value = false



More information about the Android mailing list