2017-06-23 28 views
-1

我正在研究我的应用程序,其中我想了解在任何媒体应用程序上播放的歌曲的详细信息。 我没有收到当前正在播放歌曲详情(如歌曲ID,歌手ID,专辑ID)的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); 

这里是我的Reciever:

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

您需要阅读Id3Tag才能获取此信息,以下是MediaMetadataRetriever的一些文档。您可以使用它在Android中使用Id3Tag。

用例:

MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
mmr.setDataSource(filePath); 
String albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 
+0

我正在使用元数据获取专辑的名称,但我没有收到专辑封面,以及播放音乐的专辑ID。 –

+0

你使用什么API? –

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(); 
0

我以前看过博客,给你一个想法,我没试过,但感觉应该可以实现。

1.当播放下一首音乐时,应用程序将被播放,并且广播将包含下一首歌曲的信息;

2.例如:Android系统的音乐播放器会发送“com.android.music.metachanged”广播;

3.registerReceiver

IntentFilter intentFilter = new IntentFilter(); 
intentFilter.addAction("com.android.music.metachanged"); 
registerReceiver(Your Receiver, intentFilter); 

意图4.Analysis,您可以从意向

intent.getStringExtra("album"); 
intent.getStringExtra("artist"); 
intent.getStringExtra("track"); 
intent.getStringExtra("notify_artistname"); 
intent.getStringExtra("notify_audioname"); 

5.I获得这些信息不知道,如果谷歌播放音乐将发送一个广播,另外,我不确定Google Play音乐的IntentFilter。

6.祝你成功!