我正在尝试开发一个应用程序来获取正在播放音乐/视频的其他应用程序的元数据。现在,我专注于 Youtube Android 应用程序。我认为 MusixMatch 做到了,所以它一定是可能的。据我所知,MusixMatch 会监听 Youtube 的 MediaSession 的任何更改以检索元数据。我的问题是如何?
这是我到目前为止所做的尝试。
- 设置一个
MediaBrowserService
. - 设置回调
MediaBrowserService
- 在服务上设置令牌。
但我仍然普遍感到困惑。该服务应该能够在后面触发,即使应用程序已经死亡。这意味着我不会手动将服务绑定到任何东西。那么......它究竟是如何被触发的?我尝试添加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>