2010-04-22 8 views
7

Nazwy list odtwarzania można znaleźć za pomocą zapytania pod adresem MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI , a następnie przejrzeć kolumnę MediaStore.Audio.PlaylistsColumns.NAME. Istnieje również kolumna danych, MediaStore.Audio.PlaylistsColumns._DATA, ale zwracana jest wartość null.Jak można znaleźć utwory na liście odtwarzania, mając nazwę listy odtwarzania muzyki Androida?

Lista piosenek (MediaStore.Audio.Media.EXTERNAL_CONTENT_URI/id) nie wykazuje żadnych powiązań z playlistami.

Odpowiedz

6

Oto nieco z mojego programu:

Istotą jest to, że trzeba identyfikator dla listy odtwarzania, aby pobrać utwory.

Zasadniczo można przyjąć mój kod i zmienić WHERE do .Name + "= ' "+ imię +"'",

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

BTW powodem, dla którego otrzymuję identyfikator jest to, że dwukrotnie sprawdzam ciąg ID, aby upewnić się, że jest poprawny i zmienić go w długi. – shaneburgess

+3

co to jest cManager? –

0

jest to sposób, aby uzyskać wszystkie listy odtwarzania z urządzenia

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; 



     } 
+0

Pytanie dotyczy pobierania utworów z listy odtwarzania, a nie pobierania wszystkich list odtwarzania! – akshay7692

0

Oto działający sposób na pobranie utworów z listy odtwarzania. Zasadniczo pętle kursora przechodzą przez wszystkie zapytania listy odtwarzania i za każdym razem, gdy otrzymuje identyfikator elementu (ścieżki) i używa tego identyfikatora ścieżki, możemy uzyskać inne dane, takie jak ścieżka, wykonawca, czas trwania, album itp.

Powiązane problemy