我正在尝试从 Lollipop 的 RemoteController 迁移到 MediaController,但在获取 MediaController 实例时遇到问题。在 MediaController 中它说:
A MediaController can be created through MediaSessionManager if you hold the "android.permission.MEDIA_CONTENT_CONTROL" permission or are an enabled notification listener or by getting a MediaSession.Token directly from the session owner.
但是,当我查看 MediaSessionManager 时,除了 addOnActiveSessionsChangedListener、getActiveSessions 和 removeOnActiveSessionsChangedListener 之外没有其他方法,这些方法对我没有任何帮助。 我尝试从 MediaSession 创建 token ,但这并没有使我的回调能够从其他媒体播放器获取任何内容。
最佳答案
MediaSessionManager.getActiveSessions()为您提供与当前播放的音乐播放器关联的 MediaController
实例列表。然后您可以使用 MediaController.registerCallback()注册 MediaController.Callback您创建的实现,它具有与已弃用的 RemoteController.OnClientUpdateListener 类似的回调(或者直接将媒体控件发送回 MediaController
。
当然,在大多数情况下,您希望保持 MediaController
列表与系统同步:这就是 MediaSessionManager.addOnActiveSessionsChangedListener()用于:它为您提供要使用的 MediaController
的更新列表,并在每次播放器列表发生更改时调用。根据文档,如果您使用该权限,则可以为 ComponentName notificationListener
参数传递 null
。
关于android - 如何从 MediaSessionManager 创建 MediaController 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569044/