如何在Android中获取当前播放的歌曲名称

时间:2014-10-15 06:22:05

标签: android broadcastreceiver android-mediaplayer

根据this post,可以从BroadcastReceiver检索歌曲的艺术家,专辑,曲目,但无法检索当前在Spotify或Pandora中播放的歌曲信息。(可能是因为这些应用播放歌曲时不要发送广播)。

我的问题是,无论应用是否正在播放,如何在系统级别获取当前播放歌曲的信息。

3 个答案:

答案 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;
}