2010-04-22 83 views

回答

6

這裏是我的計劃了一下:

要點是,你需要的ID爲播放列表搶歌曲。

基本上你可以把我的代碼,改變WHERE語句來。名稱+「=‘‘+名字+’’」,

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

順便說一句,我得到id的原因是我仔細檢查我的ID字符串,以確保它是正確的,並將其變成一個長。 – shaneburgess 2010-07-05 04:08:26

+3

什麼是cManager? – 2013-05-09 03:47:15

0

這是一種從設備得到所有播放列表

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

問題是關於檢索播放列表中的歌曲,而不是檢索所有播放列表! – akshay7692 2016-02-13 14:48:37

0

以下是從播放列表中獲取曲目的工作方式。基本上,它循環遍歷所有的播放列表查詢,並且每次獲得成員(軌道)的id並使用該軌道的id我們可以獲得其他數據,如路徑,藝術家,持續時間,專輯等。

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

    } 
相關問題