From 2371e0678a1eb5df876e3f46ea51e720c52242e2 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sun, 17 Dec 2023 18:44:18 -0500 Subject: [PATCH] Reusing SessionToken for all Playback connections --- .../service/playback/PlaybackClientController.kt | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/playback/PlaybackClientController.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/playback/PlaybackClientController.kt index eaafe05ae..aeb19ea3e 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/playback/PlaybackClientController.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/playback/PlaybackClientController.kt @@ -4,11 +4,14 @@ import android.content.ComponentName import android.content.Context import android.os.Bundle import android.util.Log +import android.util.LruCache import androidx.media3.session.MediaController import androidx.media3.session.SessionToken import com.google.common.util.concurrent.MoreExecutors object PlaybackClientController { + val cache = LruCache(1) + @androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class) fun prepareController( controllerID: String, @@ -25,9 +28,14 @@ object PlaybackClientController { bundle.putString("uri", videoUri) bundle.putString("callbackUri", callbackUri) - val sessionTokenLocal = SessionToken(context, ComponentName(context, PlaybackService::class.java)) + var session = cache.get(context.hashCode()) + if (session == null) { + session = SessionToken(context, ComponentName(context, PlaybackService::class.java)) + cache.put(context.hashCode(), session) + } + val controllerFuture = MediaController - .Builder(context, sessionTokenLocal) + .Builder(context, session) .setConnectionHints(bundle) .buildAsync()