Android - 如何获取更改为其他应用程序的 MediaSession?

标签 android youtube android-service mediacontroller android-mediasession

我正在尝试开发一个应用程序来获取正在播放音乐/视频的其他应用程序的元数据。现在,我专注于 Youtube Android 应用程序。我认为 MusixMatch 可以做到,所以它一定是可能的。据我所知,MusixMatch 会监听 Youtube 的 MediaSession 的任何更改以检索元数据。我的问题是如何?

这是我到目前为止尝试做的事情。

  1. 设置一个 MediaBrowserService
  2. MediaBrowserService 上设置回调
  3. 在服务上设置 token 。

但我还是很困惑。该服务应该能够在后台被触发,即使应用程序已经死亡。这意味着我不会手动将服务绑定(bind)到任何东西。那么......它究竟是如何被触发的?我尝试添加 intent-filters 但我尝试过的那些都没有用。

这是我尝试过的 intent-filters 列表...我尝试了很多,因为没有一个在工作。

 <receiver
        android:name=".broadcastReceiver.YoutubeReceiver"
        android:enabled="@bool/youtubeBroadcast"
        android:exported="@bool/youtubeBroadcast"
        tools:ignore="ExportedReceiver">
        <intent-filter>

             <action android:name="com.android.youtube.metachanged"/>
             <action android:name="com.google.android.youtube.onPlaybackStateChanged"/>
             <action android:name="com.google.android.youtube.onplaybackstatechanged"/>
             <action android:name="com.google.android.youtube.player.YouTubePlayer.OnInitializedListener"/>
             <action android:name="com.google.android.youtube.player.YouTubePlayer.PlaybackEventListener"/>
             <action android:name="com.google.android.youtube.player.YouTubePlayer.OnFullscreenListener"/>
             <action android:name="com.google.android.youtube.player.YouTubePlayer.PlayerStateChangeListener"/>

       </intent-filter>
</receiver>

最佳答案

我不认为有办法做到这一点。如果可能的话,这将是一个相当大的安全问题,尤其是在没有获得任何关键许可的情况下。

至于 Musixmatch,我相信他们只是在阅读您的音乐应用程序的通知标题(这是您在首次运行该应用程序时同意的内容),然后猜测正在播放的歌曲。这也是当从另一个应用程序播放媒体时歌词不同步的原因。

编辑:这可能值得一试 https://developer.android.com/reference/android/media/session/MediaSessionManager#addOnActiveSessionsChangedListener(android.media.session.MediaSessionManager.OnActiveSessionsChangedListener,%2520android.content.ComponentName)

关于Android - 如何获取更改为其他应用程序的 MediaSession?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46434741/

相关文章:

android - Gradle Crittercism内置映射上传不起作用

youtube - Youtube Flash Player getDuration不正确

用于创建包含 100 多个视频的 YouTube 播放列表的视频标题列表的 Python 脚本

java - Android - 无法让广播接收器工作

独立进程中的 Android 服务

android - 为什么服务在其进程被杀死后仍在运行?

java - Android:应用程序从旧的 adt-bundle 迁移到最新的 android studio 后运行缓慢

android - 需要我的 android 应用程序的设计建议

java - float 未显示正确的格式。寻找 xxxxxx.xx

javascript - 在不同网站上完成操作后,使用 YouTube API 点赞视频