По названию списка воспроизведения музыки для Android, как найти песни в списке воспроизведения? - PullRequest
7 голосов
/ 23 апреля 2010

Названия списков воспроизведения можно найти по запросу на MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI а затем посмотрите на столбец MediaStore.Audio.PlaylistsColumns.NAME. Также есть столбец данных, MediaStore.Audio.PlaylistsColumns._DATA, но он возвращает ноль.

В списке песен (MediaStore.Audio.Media.EXTERNAL_CONTENT_URI/id), похоже, нет какой-либо принадлежности к плейлисту.

Ответы [ 3 ]

6 голосов
/ 05 июля 2010

Вот немного из моей программы:

Суть в том, что вам нужен идентификатор для списка воспроизведения, чтобы получить песни.

Обычно вы можете взять мой код и изменить оператор where на .NAME + "= '" + name + "'",

private Cursor getPlaylists(String playlistId){
         Cursor cursor = null;

 String[] projection1 = {
        MediaStore.Audio.Playlists._ID,
        MediaStore.Audio.Playlists.NAME
     };

     cursor = this.managedQuery(
        MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
        projection1,
        MediaStore.Audio.Playlists._ID+ " = "+playlistId+"",
        null,
        null);
startManagingCursor(cursor);
cursor.moveToFirst();
   playlist_id = cursor.getString(0);
   playlist_id2 = cursor.getLong(0);

           if(playlist_id2 > 0){
           String[] projection = {
                   MediaStore.Audio.Playlists.Members.AUDIO_ID,
                   MediaStore.Audio.Playlists.Members.ARTIST,
                   MediaStore.Audio.Playlists.Members.TITLE,
                    MediaStore.Audio.Playlists.Members._ID



                };
           cursor = null;
                cursor = this.managedQuery(
                    MediaStore.Audio.Playlists.Members.getContentUri("external",playlist_id2 ),
                    projection,
                    MediaStore.Audio.Media.IS_MUSIC +" != 0 ",
                    null,
                    null);

           }
           cManager(cursor,2,1);
           return cursor;
       }
0 голосов
/ 31 декабря 2017

Вот рабочий способ получить треки из списка воспроизведения.По сути, он проходит курсором по всем запросам списка воспроизведения, и каждый раз, когда он получает идентификатор участника (дорожки), и, используя этот идентификатор дорожки, мы можем получать другие данные, такие как путь, исполнитель, продолжительность, альбом и т. Д.1001 *

 ContentResolver contentResolver = getContentResolver();
    Uri playListUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistID); //playlistID is the _ID of the given playlist
    MediaMetadataRetriever mr = new MediaMetadataRetriever();
    Cursor cursor = contentResolver.query(playListUri, null, null, null, null);
    if(cursor != null)
    {
        if(cursor.moveToNext()) {
            do {
                String track_id = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Playlists.Members.AUDIO_ID));
                Uri mediaContentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                String[] trackProjection = new String[]{MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.DATA};
                String selection = MediaStore.Audio.Media._ID + "=?";
                String[] selectionArgs = new String[]{"" + track_id};
                Cursor mediaCursor = contentResolver.query(mediaContentUri, trackProjection, selection, selectionArgs, null);
                if (mediaCursor != null) {
                    if (mediaCursor.getCount() >= 0) {
                        mediaCursor.moveToPosition(0);
                        String song_title = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
                        String song_artist = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
                        String song_album = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                        String song_path = mediaCursor.getString(mediaCursor.getColumnIndex(MediaStore.Audio.Media.DATA));
                    }
                }
            } while (cursor.moveToNext());
        }

    }
0 голосов
/ 09 июня 2015

это способ получить весь список воспроизведения с устройства

public ArrayList<String> getPlayList() {

            ArrayList<String> arrayList=new ArrayList<String>();

            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= activity.managedQuery(tempPlaylistURI, proj, null,null,null);

            if(playListCursor == null){
                System.out.println("Not having any Playlist on phone --------------");
                return arrayList;//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 );
                arrayList.add(playListName);
            } 

            if(playListCursor != null)
                playListCursor.close();

            return arrayList;



        }
...