¿Cómo comprobar si se está reproduciendo música desde la aplicación de música?

¿Cómo puedo comprobar desde qué aplicación de música se está reproduciendo la música en el dispositivo Android?

Usando AudioManager, podemos comprobar si la música se está reproduciendo o no. Pero no proporciona los detalles de la aplicación de música desde la que se está reproduciendo.

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

am.isMusicActive() devuelve true si se reproduce música en el dispositivo. Pero quiero el nombre de la aplicación de música de la que se está reproduciendo.

Referencias:

¿Cómo puede comprobar si la música está reproduciendo utilizando un receptor de difusión?

Desarrollo de Android: para saber qué aplicación está reproduciendo música actualmente

Por ejemplo, si reproduzco música del reproductor de Google Music. Entonces tengo que ser capaz de obtener el nombre de la aplicación de música como "Google Music Player".

Cualquier respuesta para esto sería apreciada. ¡Gracias!

Intente esto para obtener la ruta del archivo de la pista en reproducción:

 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); } 

fuentes:
Información de la pista de la música que se está reproduciendo actualmente
Marcador de agujas

  • Cómo crear una nueva lista de reproducción con ContentResolver
  • SlidingUpPanelLayout no funciona correctamente con CoordinatorLayout como primer hijo de SlidingUpPanelLayout
  • Mostrar álbum y artista en listview con LoaderManager y CursorLoader
  • El botón Play / Pause de Android MediaController y la barra de búsqueda no se actualizan
  • Cómo depurar el código nativo de Android en un dispositivo real
  • Widget del reproductor de música de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.