我正在尝试实现 Android Media3 MediaSessionService 和 MediaController,但由于某种原因播放无法开始。我究竟做错了什么?我认为我所做的一切都完全按照在后台播放媒体中所述进行。
播放服务.kt
class PlaybackService : MediaSessionService() {
private var mediaSession: MediaSession? = null
override fun onCreate() {
super.onCreate()
val player = ExoPlayer.Builder(this).build()
mediaSession = MediaSession.Builder(this, player).build()
}
override fun onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaSession? =
mediaSession
override fun onDestroy() {
mediaSession?.run {
player.release()
release()
mediaSession = null
}
super.onDestroy()
}
}
Run Code Online (Sandbox Code Playgroud)
MainActivity.kt
class MainActivity : ComponentActivity() {
private lateinit var controllerFuture: ListenableFuture<MediaController>
private lateinit var controller: MediaController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
log("onCreate MainActivity") …Run Code Online (Sandbox Code Playgroud) android android-mediaplayer exoplayer android-mediasession android-jetpack-compose
正如标题所示,CastContext.getSharedInstance(Context)现已弃用:
getSharedInstance(Context context):此方法已弃用。当 Cast SDK 无法加载内部 Cast 模块时,请使用 getSharedInstance(Context, Executor) 来处理异常。 https://developers.google.com/android/reference/com/google/android/gms/cast/framework/CastContext
指定 Executor 并返回 CastContext 的正确方法是什么?我让它像这样工作,但我想知道这是否是最好的方法:
CastContext
.getSharedInstance(context, Executors.newSingleThreadExecutor())
.addOnSuccessListener(castContext -> {
//do something with castContext
})
.addOnFailureListener(exception -> {
//throw exception
});
Run Code Online (Sandbox Code Playgroud)