【发布时间】:2020-09-07 21:25:46
【问题描述】:
背景
我想看看我是否可以获得有关当前播放歌曲的信息,以便能够显示有关它的更多信息,或者只是我获得的信息。
我想检查一下,因为我注意到一个名为“Musicolet”的流行音乐播放器应用程序上有一个设置 (here),它是“广播专辑封面”。当然它只是说“专辑艺术”,但它也说它是“第三者”的。所以我想调查一下是否可行。
问题
不确定是否可能。我看到了相互矛盾的答案。
我发现了什么
我发现了一些关于它的有趣链接:
- 我还在 StackOverflow (here) 上发现了一个关于获取它的问题,但它缺少一些关键代码。
- 另一方面,我发现另一个帖子说这不是官方的,你可能做不到,here。
- 我注意到 Spotify 有(或仍然有?)类似的东西(here,除了我在那里看不到专辑封面),但它有点旧了。
- 我还发现了一个有趣的界面RemoteControlClient.OnMetadataUpdateListener(来自here),但找不到任何关于它的示例或教程,除了可能来自XDA 的this one。
当然,我尝试使用从这些链接中找到的提示,但未能让任何东西真正发挥作用。
所以也许在过去是不可能的,然后它是可能的。但是由于某种原因,我没有看到如何使用它的示例/教程,包括在文档中。
我认为如果可能的话,它需要通知访问,因为它与从音乐播放器的通知中读取当前播放的音乐大致相同。
问题
-
是否可以注册到关于歌曲播放时间的回调(也可以随时查询)并获取有关它的信息?
意思是歌名、专辑名、文件路径/uri、专辑封面……
-
如果可能,怎么做?它需要什么?
-
如果不可能,有什么解决方法吗?任何适用于某些应用程序的东西?也许通知中存在一些东西,更正式地说,我可以检测到它属于这种类型,并获取这些信息?
【问题讨论】:
-
您可以尝试
MediaSessionManager.getActiveSessions,确定当前正在播放的会话,然后读取其元数据。这当然假设媒体播放器的开发人员正确构建了媒体会话对象及其元数据。 -
它会导致需要权限的异常。可以试试吗?
标签: android android-notifications playback