我正在开发我的应用程序,我想在其中获取在任何媒体应用程序上播放的歌曲的详细信息。 我目前没有收到Google Play音乐应用的数据,而是播放歌曲ID,艺术家ID,专辑ID等歌曲详情。
我试过下面的代码:
IntentFilter intentFilter=new IntentFilter();
intentFilter.addAction("com.android.music.metachanged");
intentFilter.addAction("com.android.music.playstatechanged");
intentFilter.addAction("com.android.music.playbackcomplete");
intentFilter.addAction("com.android.music.queuechanged");
intentFilter.addAction("com.samsung.sec.android.MusicPlayer.metachanged");
intentFilter.addAction("com.spotify.music.playbackstatechanged");
intentFilter.addAction("com.spotify.music.metadatachanged");
intentFilter.addAction("com.apple.android.music.metachanged");
intentFilter.addAction("com.apple.android.music.playstatechanged");
intentFilter.addAction("com.rdio.android.metachanged");
intentFilter.addAction("com.rdio.android.playstatechanged");
//register the intentfilters into the reciever
registerReceiver(mReceiver,intentFilter);
这是我的收件人:
BroadcastReceiver mReceiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, final Intent intent) {
String action = intent.getAction();
//Bundle bundle=intent.getExtras();
String cmd = intent.getStringExtra("command");
Log.v("tag ", action + " / " + cmd);
//not getting the song id in the google play music and album_id and artist id in both
final String song_id=String.valueOf(intent.getLongExtra("id", 0));
final String album_id= String.valueOf(intent.getLongExtra("album_id",0));
final String artist_id= String.valueOf(intent.getLongExtra(MediaStore.Audio.Artists._ID,0));
final String title=intent.getStringExtra("track");
final String playlist_id= String.valueOf(intent.getLongExtra(MediaStore.Audio.Playlists._ID,0));
final String playlist_name=intent.getStringExtra(MediaStore.Audio.Playlists.NAME);
final String artist=intent.getStringExtra(MediaStore.Audio.AudioColumns.ARTIST);
final String album=intent.getStringExtra(MediaStore.Audio.AudioColumns.ALBUM);
}
};
在默认播放器中获取歌曲详细信息,但不在谷歌播放音乐中。
答案 0 :(得分:1)
由于其他答案只是有点正确但不完全在这里是该问题的实际答案:PlayMusic拥有您可以查询的自己的内容提供商。
这是一个工作示例(trackId是意图的SongId额外):
{{1}}
答案 1 :(得分:0)
要获取歌曲ID,艺术家ID和专辑ID,您应该使用此方法。从那以后你可以得到它。
ContentResolver contentResolver = getActivity().getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0";
String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
Cursor cursor = contentResolver.query(uri, null, selection, null, sortOrder);
if (cursor != null && cursor.getCount() > 0) {
audioList = new ArrayList<>();
while (cursor.moveToNext()) {
String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String album_id = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
Long albumid = Long.parseLong(album_id);
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri finaluri = ContentUris.withAppendedId(sArtworkUri, albumid);
String path = FileUtils.getPath(getContext(), finaluri);
//Bitmap artwork = BitmapFactory.decodeStream(in);
// Save to audioList
audioList.add(new Audio(data, title, album, artist,path));
}
}
cursor.close();
答案 2 :(得分:0)
1.播放下一首音乐时,应用程序将被播放,广播将包含下一首歌曲的信息;
2.例如:Android系统的音乐播放器将发送&#34; com.android.music.metachanged&#34;广播;
3.registerReceiver
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.android.music.metachanged");
registerReceiver(Your Receiver, intentFilter);
4.意图分析,您可以从意图中获取此信息
intent.getStringExtra("album");
intent.getStringExtra("artist");
intent.getStringExtra("track");
intent.getStringExtra("notify_artistname");
intent.getStringExtra("notify_audioname");
5.我不知道Google Play音乐是否会发送广播,我也不确定Google Play音乐的IntentFilter。
6.祝你成功!
答案 3 :(得分:-1)
您需要阅读Id3Tag以获取此信息,以下是MediaMetadataRetriever的一些文档。您可以使用它在Android中使用Id3Tag。
用法示例:
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(filePath);
String albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);