¿Cómo puedo acceder a la lista de reproducción creada por la aplicación de música por defecto de Android y llamar a la aplicación de música para reproducirla?

Estoy escribiendo una aplicación para Android, y quiero acceder a la lista de reproducción creada por la aplicación de música por defecto de Android.

En mi aplicación, el usuario debe poder examinar la lista de reproducción y seleccionar cualquier lista de reproducción para reproducir.

Así que básicamente quiero saber cómo acceder a él y cuando el usuario selecciona cualquier lista de reproducción, cómo pasar a la aplicación de música por defecto para jugar en segundo plano.

¿Tiene algo que ver con ContentProvider o mediastore? Realmente no sé cómo acceder a los datos de otras aplicaciones.

Muchas gracias!

Para reproducir las canciones de listas de reproducción anteriores, estoy llamando a la función

PlaySongsFromAPlaylist (PlayListID); // 0 <PlayListID <count

Del método onCreate anterior. Y el código restante es como se menciona a continuación.

public void PlaySongsFromAPlaylist(int playListID){ String[] ARG_STRING = {MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Video.Media.SIZE,android.provider.MediaStore.MediaColumns.DATA}; Uri membersUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playListID); Cursor songsWithingAPlayList = mThis.managedQuery(membersUri, ARG_STRING, null, null, null); int theSongIDIwantToPlay = 0; // PLAYING FROM THE FIRST SONG if(songsWithingAPlayList != null) { songsWithingAPlayList.moveToPosition(theSongIDIwantToPlay); String DataStream = songsWithingAPlayList.getString(4); PlayMusic(DataStream); songsWithingAPlayList.close(); } } public static void PlayMusic(String DataStream){ MediaPlayer mpObject = new MediaPlayer(); if(DataStream == null) return; try { mpObject.setDataSource(DataStream); mpObject.prepare(); mpObject.start(); } catch (Exception e) { e.printStackTrace(); } } 

Espero que esto funcione. 🙂

Para mostrar toda la lista de reproducción creada por el usuario en la aplicación de música predeterminada en Android, utilizo el siguiente bloque de código en mi Actividad:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String[] proj = {"*"}; Uri tempPlaylistURI = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI; // In the next line 'this' points to current Activity. // If you want to use the same code in other java file then activity, // then use an instance of any activity in place of 'this'. Cursor playListCursor= this.managedQuery(tempPlaylistURI, proj, null,null,null); if(playListCursor == null){ System.out.println("Not having any Playlist on phone --------------"); return;//don't have list on phone } System.gc(); String playListName = null; System.out.println(">>>>>>> CREATING AND DISPLAYING LIST OF ALL CREATED PLAYLIST <<<<<<"); for(int i = 0; i <playListCursor.getCount() ; i++) { playListCursor.moveToPosition(i); playListName = playListCursor.getString(playListCursor.getColumnIndex("name")); System.out.println("> " + i + " : " + playListName ); } if(playListCursor != null) playListCursor.close(); } 

No se olvide de incluir estos antes de usar

 import android.net.Uri; import android.provider.MediaStore; import android.database.Cursor; 

Este código está probado y funciona bien sobre target = android-8

Esta actividad combina las dos respuestas de Ankur Pandya para listar las listas de reproducción en el dispositivo y luego reproducir la primera pista de la primera lista de reproducción.

 package com.withoutstones.pandyaplaylists; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; /** * @author Ankur Pandya * @author Tommy Herbert */ public class PandyaPlaylistsActivity extends Activity { // constants private static final String LOGGING_TAG = "PandyaPlaylists"; // static methods /** * Create a MediaPlayer and play the specified audio file. Note that a full app would usually * call stop() and release() on the player after use. * * @param path * to data file */ public static void playAudio(final String path) { final MediaPlayer player = new MediaPlayer(); if (path == null) { Log.e(LOGGING_TAG, "Called playAudio with null data stream."); return; } try { player.setDataSource(path); player.prepare(); player.start(); } catch (Exception e) { Log.e(LOGGING_TAG, "Failed to start MediaPlayer: " + e.getMessage()); return; } } // superclass overrides @Override public void onCreate(final Bundle savedInstanceState) { // Create the superclass portion of the object. super.onCreate(savedInstanceState); // Set up the UI. this.setContentView(R.layout.main); // Get a cursor over all playlists. final ContentResolver resolver = this.getContentResolver(); final Uri uri = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI; final String idKey = MediaStore.Audio.Playlists._ID; final String nameKey = MediaStore.Audio.Playlists.NAME; final String[] columns = { idKey, nameKey }; final Cursor playLists = resolver.query(uri, columns, null, null, null); if (playLists == null) { Log.e(LOGGING_TAG, "Found no playlists."); return; } // Log a list of the playlists. Log.i(LOGGING_TAG, "Playlists:"); String playListName = null; for (boolean hasItem = playLists.moveToFirst(); hasItem; hasItem = playLists.moveToNext()) { playListName = playLists.getString(playLists.getColumnIndex(nameKey)); Log.i(LOGGING_TAG, playListName); } // Play the first song from the first playlist. playLists.moveToFirst(); final long playlistID = playLists.getLong(playLists.getColumnIndex(idKey)); this.playTrackFromPlaylist(playlistID); // Close the cursor. if (playLists != null) { playLists.close(); } } // PandyaPlaylistsActivity instance methods /** * Play the first track on the specified playlist. * * @param playListID * from the MediaStore database */ public void playTrackFromPlaylist(final long playListID) { final ContentResolver resolver = this.getContentResolver(); final Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playListID); final String dataKey = MediaStore.Audio.Media.DATA; Cursor tracks = resolver.query(uri, new String[] { dataKey }, null, null, null); if (tracks != null) { tracks.moveToFirst(); final int dataIndex = tracks.getColumnIndex(dataKey); final String dataPath = tracks.getString(dataIndex); PandyaPlaylistsActivity.playAudio(dataPath); tracks.close(); } } } 
  • MediaMetadataRetriever getFrameAtTime: videoframe es un puntero nulo
  • Xamarin Forms - Media Plugin - Vaciar las miniaturas en el teléfono
  • Android Equalizer para nivel de API <9
  • ¿Cómo consultar al proveedor de contenido de Android MediaStore, evitando las imágenes huérfanas?
  • Reproducción de un tono de timbre de una actividad se detiene abruptamente
  • ¿Los navegadores iPhone / Android admiten CSS @media handheld?
  • Uso de MediaController en Android 5
  • ¿Cómo puedo detectar que el objeto MediaPlayer comienza a reproducirse?
  • Android: cómo obtener una miniatura de vídeo de un archivo privado para su aplicación?
  • Android: guarda un archivo de un URI existente
  • Comunicación entre servicio y actividad en una aplicación android mediaplayer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.