2010-04-22 12 views
7

प्लेलिस्ट नाम MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI पर एक क्वेरी द्वारा देखे जा सकते हैं और फिर MediaStore.Audio.PlaylistsColumns.NAME कॉलम देखें। एक डेटा कॉलम भी है, MediaStore.Audio.PlaylistsColumns._DATA, लेकिन यह शून्य लौट रहा है।एक एंड्रॉइड संगीत प्लेलिस्ट नाम को देखते हुए, प्लेलिस्ट में गाने कैसे ढूंढ सकते हैं?

गीतों की सूची (MediaStore.Audio.Media.EXTERNAL_CONTENT_URI/id) कोई भी प्लेलिस्ट संबद्धता दिखाने के लिए प्रतीत नहीं होती है।

सार है कि आप गाने हड़पने के लिए प्लेलिस्ट के लिए आईडी की जरूरत है:

उत्तर

6

यहाँ मेरी कार्यक्रम से थोड़ा है।

असल में आप डिवाइस से सभी प्लेलिस्ट प्राप्त करने के लिए जिस तरह से मेरी कोड लेने के लिए और जहां बयान .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

बीटीडब्ल्यू मुझे आईडी मिलने का कारण यह है कि मैं यह सुनिश्चित करने के लिए अपनी आईडी स्ट्रिंग को दोबारा जांचता हूं कि यह सही है और इसे लंबे समय तक चालू करें। – shaneburgess

+3

सीएमएनेगर क्या है? –

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

0

यहां प्ले सूची से ट्रैक प्राप्त करने का एक कामकाजी तरीका है। असल में यह कर्सर को सभी प्लेलिस्ट क्वेरी के माध्यम से लूप करता है, और प्रत्येक बार जब यह किसी सदस्य (ट्रैक) की आईडी प्राप्त करता है और ट्रैक की उस आईडी का उपयोग करके हम पथ, कलाकार, अवधि, एल्बम इत्यादि जैसे अन्य डेटा प्राप्त कर सकते हैं

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

    }