2017-06-23 33 views
-1

私はどのメディアアプリケーションでも再生している曲の詳細を取得したいと思っています。 現在、Google Playミュージックアプリのデータを取得していません。現在、曲ID、アーティストID、アルバムIDなどの曲の詳細を再生しています。Googleの再生音楽から現在再生中の曲の曲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); 
     } 
    }; 

は、デフォルトのプレーヤーで曲の詳細​​情報を取得するが、Googleで音楽を再生できません。

答えて

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」ブロードキャストで送信します。 4.Analysis意思の

3.registerReceiver

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

、あなたは、Googleがブロードキャストを送信する音楽を再生するかどうかを知りません

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

5.Iからこの情報を取得することができ、また、Google PlayミュージックのIntentFilterについてはわかりません。

6.成功してください!

関連する問題