5

Come faccio a verificare da quale app musicale viene riprodotta la musica nel dispositivo Android?Come verificare se la musica viene riprodotta da quale app musicale?

Utilizzando AudioManager, possiamo controllare se la musica è in riproduzione o no. Ma non fornisce i dettagli dell'app musicale da cui viene riprodotta.

AudioManager am = (AudioManager) this.getSystemService (Context.AUDIO_SERVICE);

am.isMusicActive() rendimenti vero se la musica è giocato in dispositivo. Ma voglio il nome dell'app musicale da cui viene riprodotto.

Riferimenti:

How do you check if music is playing by using a broadcast receiver?

Android development : To find out which app is playing music currently

Per esempio, se io gioco la musica dal lettore Google Music. Quindi devo essere in grado di ottenere il nome dell'app musica come "Google Music Player".

Qualsiasi risposta per questo sarebbe apprezzato. Grazie!

risposta

0

Prova questo per ottenere in corso di riproduzione percorso del file della traccia:

public Cursor query(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder, int limit) { 
    try { 
     ContentResolver resolver = context.getContentResolver(); 
     if (resolver == null) return null; 
     if (limit > 0) uri = uri.buildUpon().appendQueryParameter("limit", "" + limit).build(); 
     return resolver.query(uri, projection, selection, selectionArgs, sortOrder); 
    } catch (UnsupportedOperationException ex) { return null; } 
} 
private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String path = intent.getStringExtra("track").replaceAll("'","''"); 
     Cursor c = query(context, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
       new String[] { MediaStore.Audio.Media.DATA }, MediaStore.Audio.Media.TITLE + "='" + path + "'", 
       null, null, 0); 
     try { 
      if (c == null || c.getCount() == 0) return; 
      int size = c.getCount(); 
      if (size != 1) return; 
      c.moveToNext(); 

      // Here's the song path 
      String songPath = c.getString(0); 
      Log.d("ROAST_APP", "" + songPath); 
     } finally { 
      if (c != null) c.close(); 
     } 
    } 
}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    IntentFilter iF = new IntentFilter(); 
    iF.addAction("com.android.music.metachanged"); 
    iF.addAction("com.android.music.playstatechanged"); 
    iF.addAction("com.android.music.playbackcomplete"); 
    iF.addAction("com.android.music.queuechanged"); 
    registerReceiver(mReceiver, iF); 
} 

fonti:
Track info of currently playing music
Needletagger