从当前播放的音频访问元数据。 (内置或外部应用程序)

时间:2012-04-25 15:09:48

标签: android media-player metadata

我正在尝试开发一个app / widget,我需要显示音轨的当前播放信息(元数据)。

如果我自己也在编写MediaPlayer,这将是微不足道的,因为我可以简单地访问MediaStore并提供信息,但是,我不希望在这方面与过多的现有应用程序竞争。我希望能够从内置音频播放器或其他应用程序(如SongBird或PowerAMP)中获取此信息。

我应该可以使用他们的[API] [1]在PowerAMP上做到这一点,但是我有,但我真的想要一个适用于股票Android播放器和其他人的解决方案。

我希望能够从AudioManager中获取信息,但这似乎只允许我查询当前状态(Music is playing et),我可以设置我播放音乐等的意图......但是无法访问其他人的元数据。

所以我的想法是不能轻易做到的。我的想法是,我可以从顶部的信息栏访问此信息,因为现在正在播放的信息打印在那里。虽然这可能是一个丑陋的黑客......

有一段时间我对4.0中的RemoteControlClient.MetadataEditor感到兴奋,但后来我发现它是将这些信息写入可以发送到物理遥控器的流,而不是让你创建一个软件远程。该死!

有没有人有任何想法?

[1]:http://forum.powerampapp.com/index.php?/topic/1034-updated-for-20-poweramp-api-lib-and-sample-applications/ Power AMP

3 个答案:

答案 0 :(得分:2)

我已经写了一个实现这个目的的指南。

基本上,您需要访问android.jar库的隐藏类。然后你必须扩展IRemoteControlDisplay $ Stub类,并实现它的方法。 之后,使用隐藏方法注册RemoteControlDisplay - AudioManager #registerRemoteControlDisplay。 在一个答案中有太多的解释,所以阅读我的XDA开发人员指南。 链接在这里: http://forum.xda-developers.com/showpost.php?p=44513199

另外,我目前正在开发一个库,它将简化实现远程媒体控件的过程。

答案 1 :(得分:1)

  

我应该可以使用他们的[API] [1]在PowerAMP上做到这一点,但是我有,但我真的想要一个适用于股票Android播放器和其他人的解决方案。

AOSP音乐应用或Google Play音乐应用AFAIK没有记录和支持的API。它们肯定不在Android SDK中。

我不知道媒体播放器的Android生态系统标准会暴露这些信息,更不用说支持这种标准的应用程序。欢迎您与此类应用程序的开发人员合作,并鼓励他们创建和采用标准。

  

我的想法是,我可以从顶部的信息栏访问此信息,因为现在播放的信息会打印在那里。

出于明显的隐私和安全原因,无法监视其他应用程序Notifications

答案 2 :(得分:1)

  

有一段时间我对4.0中的RemoteControlClient.MetadataEditor感到兴奋,但后来我发现它是将这些信息写入可以发送到物理遥控器的流,而不是让你创建一个软件远程。该死!

当然有一种方法可以访问Android 4.0上的远程控制客户端元数据,因为锁定屏幕可以在播放媒体时访问它。

我根本不是开发人员,但我试图在AOKP源代码中进行一些探讨,这是我对其工作方式的有限理解。至少在AOKP(当然也可能是AOSP)中,似乎锁屏使用core / java / com / android / internal / widget / TransportControlView.java在锁屏上绘制音乐控件小部件,而后者又使用媒体/java/android/media/IRemoteControlDisplay.aidl用于数据检索。至少,在TransportControlView.java中查看是否可以弄清楚锁屏小部件的工作原理可能会很有用。