2017-06-23 30 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.祝你成功!