有什么方法可以获取当前正在播放的歌曲的信息?

时间:2019-11-26 14:19:39

标签: android android-mediaplayer android-audiomanager

出于研究原因,我正在开发一个反映第三方播放器应用程序播放器状态的应用程序。

我设法了解了如何通过AudioManager API控制其他播放器的播放状态,但是对于了解如何获取其他播放器的当前歌曲信息,我一无所知。 :

  • 歌曲名称;
  • 艺术家姓名,和
  • 当前歌曲位置。

有什么办法可以从Android提取此数据?

1 个答案:

答案 0 :(得分:0)

从我的研究中,我仅找到一种方法来执行此操作,但不幸的是,该设备必须运行 Android> = 21 (Lollipop),并获得用户的特殊许可({{3} })

使用android.permission.BIND_NOTIFICATION_LISTENER_SERVICE可以知道哪种媒体正在设备上播放。为此,我们所需要做的就是以两种方式获取活动的MediaSessionManager

有了活动的MediaController,我们就可以通过其可用功能从他们那里获取所需的信息。值得一提的是,每个播放器都按照他们想要的方式填充其媒体会话数据,因此很可能一个人几乎没有或根本没有有用的数据,而另一个人却拥有大量的数据(Google就是这种情况)播放音乐应用)。

我们可以突出显示MediaController类的一些功能:

请注意,玩家可以将自定义数据放入MediaController#getMetaData捆绑包中。例如,Google Play音乐添加了两个:

  • "com.google.android.music.mediasession.METADATA_KEY_QUEUE_SIZE"和;
  • "com.google.android.music.mediasession.METADATA_KEY_QUEUE_POSITION"

调试可能是了解它们的最好朋友。


另一个实现此目标的理想方法是使用MediaController#getQueueTitle。可以在此MediaBrowserService中进行详细阅读。


如果您知道一种更好的方法,尤其是不需要android.permission.BIND_NOTIFICATION_LISTENER_SERVICE权限的话,欢迎您提供:)

相关问题