根据this post,可以从BroadcastReceiver
检索歌曲的艺术家,专辑,曲目,但无法检索当前在Spotify或Pandora中播放的歌曲信息。(可能是因为这些应用播放歌曲时不要发送广播)。
我的问题是,无论应用是否正在播放,如何在系统级别获取当前播放歌曲的信息。
答案 0 :(得分:4)
听取com.android.music。*广播是在Android上执行此操作的官方方法 许多应用程序,如歌词显示器依赖它来获取当前曲目的信息 遗憾的是,如果应用程序没有广播解决方案,要么查看他们的Dev文档,以防他们提供另一种方法来执行此操作或直接要求他们实现它。
对于Spotify,现在看起来他们使用的是com.spotify.music.metadatachanged'广播(和应用程序中的设置)。您将不得不追踪像这样的单独案例,没有任何东西迫使Android开发人员实施标准广播。
答案 1 :(得分:1)
在android 4.4+中,您可以使用RemoteController类从当前播放的歌曲中获取曲目信息。这适用于实现RemoteControlClient的每个应用程序。它也适用于像chromecast这样的视频和流服务。
http://forum.xda-developers.com/showthread.php?p=48702254#post48702254
如果您想使用此RemoteController,这是一个非常方便的指南。
开发者页面:
https://developer.android.com/reference/android/media/RemoteController.html
答案 2 :(得分:1)
你肯定知道这首歌的路径在哪里 Uri myUri1 = Uri.parse(路径);
现在你可以调用带有路径的方法,然后我们可以通过绑定获取活动或服务中的所有信息
private void getTrackInfo(Uri audioFileUri) {
MediaMetadataRetriever metaRetriever= new MediaMetadataRetriever();
metaRetriever.setDataSource(getRealPathFromURI(audioFileUri));
String artist = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
String title = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
}
private String getRealPathFromURI(Uri uri) {
File myFile = new File(uri.getPath().toString());
String s = myFile.getAbsolutePath();
return s;
}