android - 如何从 MediaSessionManager 创建 MediaController 实例?

标签 android android-5.0-lollipop

我正在尝试从 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/

相关文章:

android - "java.lang.IllegalStateException: not connected to MediaScannerService"在Android中添加文件到媒体库时

java - 应用程序启动后崩溃

android - Lollipop - 不确定的 ProgressBar 颜色变化 - 以编程方式

安卓 Lollipop : Where to find code of "API Demos" app preinstalled in the Android Lollipop Nexus 5 emulator

android:Theme.Material.Light 需要 API 级别 21(当前最低为 8)

android - 有没有AudioManager.MODE_IN_COMMUNICATION蓝牙权限交互?

Android - 布局问题 - Textviews top center and bottom center

java - 代码适用于 Activity 但不适用于 Fragment

android - Action 栏 android L

android - 由于 Android Lollipop 5.0 我无法通过 SSL 或 TLSv1 与服务器 (X509TrustManager) 通信