2

我正在尝试开发一个应用程序/小部件,我需要为此显示音轨的当前播放信息(元数据)。

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

我应该能够使用 PowerAMP 使用他们的 [API][1] 来做到这一点,但是我真的想要一个适用于股票 android 播放器和其他播放器的解决方案。

我希望能够从 AudioManager 中获取信息,但这似乎只允许我查询当前状态(音乐正在播放等)并且我可以设置播放音乐的意图等......但无法访问来自其他人的应用程序的元数据。

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

有那么一刻,我对 4.0 的 RemoteControlClient.MetadataEditor 感到兴奋,但后来我发现它是为了将该信息写入可以发送到物理遥控器的流,而不是允许您创建软件遥控器。该死!

有没有人有任何想法?

[1]: http: //forum.powerampapp.com/index.php? /topic/1034-updated-for-20- poweramp -api-lib-and-sample-applications/ 功率放大器

4

3 回答 3

2

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

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

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

于 2013-09-02T18:38:27.860 回答
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 中查看一下是否可以弄清楚锁屏小部件是如何工作的可能很有用。

于 2012-05-08T01:05:51.053 回答
1

我应该能够使用 PowerAMP 使用他们的 [API][1] 来做到这一点,但是我真的想要一个适用于股票 android 播放器和其他播放器的解决方案。

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

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

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

Notifications出于明显的隐私和安全原因,不可能监视其他应用程序。

于 2012-04-25T15:17:30.837 回答