我正在尝试从RemoteController移动到Lollipop的MediaController但是我在获取MediaController实例时遇到了麻烦。在MediaController中它说:
如果您持有“android.permission.MEDIA_CONTENT_CONTROL”权限或者是启用的通知侦听器或直接从会话所有者获取MediaSession.Token,则可以通过MediaSessionManager创建MediaController。
但是,当我查看MediaSessionManager时,除了addOnActiveSessionsChangedListener,getActiveSessions和removeOnActiveSessionsChangedListener之外,没有其他方法可以帮助我。 我尝试从MediaSession创建一个令牌但是没有让我的回调从其他媒体播放器获得任何东西。
答案 0 :(得分:4)
MediaSessionManager.getActiveSessions()为您提供与当前正在播放的音乐播放器相关联的MediaController
个实例的列表。然后,您可以使用MediaController.registerCallback()注册您创建的MediaController.Callback实施,该实施与已弃用的RemoteController.OnClientUpdateListener具有类似的回调(或者直接将媒体控件发送回MediaController
当然,在大多数情况下,您希望将MediaController
的列表与系统保持同步:这是MediaSessionManager.addOnActiveSessionsChangedListener()的用途:它会为您提供{{1}的更新列表每次玩家列表改变时都会使用和调用。根据文档,如果您使用的是权限,则可以将MediaController
传递给null
参数。