[Android] Fix the remote access play endpoint by relaxing the media collision

Nicolas Pomepuy git at videolan.org
Tue Mar 18 13:24:42 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Thu Mar 13 10:40:47 2025 +0100| [8198ca7eb8c377bbb8fd7a39de6f17e9f170c4b5] | committer: Nicolas Pomepuy

Fix the remote access play endpoint by relaxing the media collision

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

 .../vlc/remoteaccessserver/RemoteAccessRouting.kt  | 27 ++++++++++++----------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt
index 2728e3ca12..1d60bf14a2 100644
--- a/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt
+++ b/application/remote-access-server/src/main/java/org/videolan/vlc/remoteaccessserver/RemoteAccessRouting.kt
@@ -118,6 +118,16 @@ import org.videolan.vlc.providers.BrowserProvider
 import org.videolan.vlc.providers.FileBrowserProvider
 import org.videolan.vlc.providers.StorageProvider
 import org.videolan.vlc.providers.medialibrary.sanitizeGroups
+import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.Companion.getServerFiles
+import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.PlayerStatus
+import org.videolan.vlc.remoteaccessserver.RemoteAccessSession.verifyLogin
+import org.videolan.vlc.remoteaccessserver.utils.MediaZipUtils
+import org.videolan.vlc.remoteaccessserver.utils.serveAudios
+import org.videolan.vlc.remoteaccessserver.utils.servePlaylists
+import org.videolan.vlc.remoteaccessserver.utils.serveSearch
+import org.videolan.vlc.remoteaccessserver.utils.serveVideos
+import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets
+import org.videolan.vlc.remoteaccessserver.websockets.WSIncomingMessage
 import org.videolan.vlc.util.FileUtils
 import org.videolan.vlc.util.Permissions
 import org.videolan.vlc.util.RemoteAccessUtils
@@ -132,16 +142,6 @@ import org.videolan.vlc.util.slugify
 import org.videolan.vlc.util.toByteArray
 import org.videolan.vlc.viewmodels.browser.FavoritesProvider
 import org.videolan.vlc.viewmodels.browser.PathOperationDelegate
-import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.Companion.getServerFiles
-import org.videolan.vlc.remoteaccessserver.RemoteAccessServer.PlayerStatus
-import org.videolan.vlc.remoteaccessserver.RemoteAccessSession.verifyLogin
-import org.videolan.vlc.remoteaccessserver.utils.MediaZipUtils
-import org.videolan.vlc.remoteaccessserver.utils.serveAudios
-import org.videolan.vlc.remoteaccessserver.utils.servePlaylists
-import org.videolan.vlc.remoteaccessserver.utils.serveSearch
-import org.videolan.vlc.remoteaccessserver.utils.serveVideos
-import org.videolan.vlc.remoteaccessserver.websockets.RemoteAccessWebSockets
-import org.videolan.vlc.remoteaccessserver.websockets.WSIncomingMessage
 import java.io.BufferedWriter
 import java.io.File
 import java.io.FileNotFoundException
@@ -950,7 +950,10 @@ fun Route.setupRouting(appContext: Context, scope: CoroutineScope) {
 
                 val medias = appContext.getFromMl {
                     if (path?.isNotBlank() == true) {
-                        arrayOf(MLServiceLocator.getAbstractMediaWrapper(Uri.parse(path)))
+                        if (id.toLong() > 0)
+                            arrayOf(getMedia(id.toLong()))
+                        else
+                            arrayOf(MLServiceLocator.getAbstractMediaWrapper(Uri.parse(path)))
                     } else when (type) {
                         "album" -> getAlbum(id.toLong()).tracks
                         "artist" -> getArtist(id.toLong()).tracks
@@ -969,7 +972,7 @@ fun Route.setupRouting(appContext: Context, scope: CoroutineScope) {
                 }
                 if (medias.isEmpty()) call.respond(HttpStatusCode.NotFound)
                 else {
-                    if (medias.size == 1 && medias[0].id == RemoteAccessServer.getInstance(appContext).service?.currentMediaWrapper?.id) {
+                    if (medias.size == 1 && medias[0].id == RemoteAccessServer.getInstance(appContext).service?.currentMediaWrapper?.id && medias[0].uri == RemoteAccessServer.getInstance(appContext).service?.currentMediaWrapper?.uri) {
                         call.respond(HttpStatusCode.OK)
                         return at get
                     }



More information about the Android mailing list