Reusing SessionToken for all Playback connections
This commit is contained in:
+10
-2
@@ -4,11 +4,14 @@ import android.content.ComponentName
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import android.util.LruCache
|
||||||
import androidx.media3.session.MediaController
|
import androidx.media3.session.MediaController
|
||||||
import androidx.media3.session.SessionToken
|
import androidx.media3.session.SessionToken
|
||||||
import com.google.common.util.concurrent.MoreExecutors
|
import com.google.common.util.concurrent.MoreExecutors
|
||||||
|
|
||||||
object PlaybackClientController {
|
object PlaybackClientController {
|
||||||
|
val cache = LruCache<Int, SessionToken>(1)
|
||||||
|
|
||||||
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
|
@androidx.annotation.OptIn(androidx.media3.common.util.UnstableApi::class)
|
||||||
fun prepareController(
|
fun prepareController(
|
||||||
controllerID: String,
|
controllerID: String,
|
||||||
@@ -25,9 +28,14 @@ object PlaybackClientController {
|
|||||||
bundle.putString("uri", videoUri)
|
bundle.putString("uri", videoUri)
|
||||||
bundle.putString("callbackUri", callbackUri)
|
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
|
val controllerFuture = MediaController
|
||||||
.Builder(context, sessionTokenLocal)
|
.Builder(context, session)
|
||||||
.setConnectionHints(bundle)
|
.setConnectionHints(bundle)
|
||||||
.buildAsync()
|
.buildAsync()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user