2010-07-06 7 views
11

कोई भी जानता है कि एंड्रॉइड में प्लेलिस्ट को कोड में कैसे जोड़ना है?एंड्रॉइड प्लेलिस्ट बनाएं

मुझे लगता है कि मुझे इसे सामग्री रिज़ॉल्वर में डालना है, लेकिन क्या मुझे बस गाने आईडी डालना है या क्या मुझे गाने के सभी डेटा को रखना होगा?

मैं नमूना कोड ढूंढ रहा हूं लेकिन अभी तक कोई नहीं मिला है।

संपादित करें: एक जवाब यहाँ पाया जाता है कैसे मैं यह कर:

public static void addToPlaylist(ContentResolver resolver, int audioId) { 

     String[] cols = new String[] { 
       "count(*)" 
     }; 
     Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", YOUR_PLAYLIST_ID); 
     Cursor cur = resolver.query(uri, cols, null, null, null); 
     cur.moveToFirst(); 
     final int base = cur.getInt(0); 
     cur.close(); 
     ContentValues values = new ContentValues(); 
     values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, Integer.valueOf(base + audioId)); 
     values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, audioId); 
     resolver.insert(uri, values); 
    } 

    public static void removeFromPlaylist(ContentResolver resolver, int audioId) { 
     Log.v("made it to add",""+audioId); 
     String[] cols = new String[] { 
       "count(*)" 
     }; 
     Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", YOUR_PLAYLIST_ID); 
     Cursor cur = resolver.query(uri, cols, null, null, null); 
     cur.moveToFirst(); 
     final int base = cur.getInt(0); 
     cur.close(); 
     ContentValues values = new ContentValues(); 

     resolver.delete(uri, MediaStore.Audio.Playlists.Members.AUDIO_ID +" = "+audioId, null); 
    } 
+4

मैं समझने की कोशिश कर रहा हूँ यह करने के लिए गाना जोड़ देगा कोड ... addToPlaylist में, क्या आप वास्तव में PLAY_ORDER प्रॉपर्टी को प्लेलिस्ट में गानों की संख्या> + <गीत की वैश्विक आईडी> पर सेट कर रहे हैं? क्या इसका मतलब यह है कि PLAY_ORDER एक ट्रैक इंडेक्स नहीं है, या वह ऑडियो आईडी डिवाइस में गीत के अद्वितीय पहचानकर्ता नहीं है? –

+0

इसके अलावा, प्लेलिस्ट क्या है? यह कोड केवल प्लेलिस्ट में आइटम जोड़ता प्रतीत होता है - वास्तव में * प्लेलिस्ट बनाने के लिए कोई तरीका है? – Yang

+1

यदि आपने स्वयं समस्या हल की है तो कृपया एक उत्तर बनाएं और इसे स्वीकार्य के रूप में चिह्नित करें। –

उत्तर

11

की "उत्तर नहीं मिला" बाहर प्रश्न प्राप्त करने के लिए मैं चिपकाया है ओ पी के यहाँ कोड:

public static void addToPlaylist(ContentResolver resolver, int audioId) { 

     String[] cols = new String[] { 
       "count(*)" 
     }; 
     Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", YOUR_PLAYLIST_ID); 
     Cursor cur = resolver.query(uri, cols, null, null, null); 
     cur.moveToFirst(); 
     final int base = cur.getInt(0); 
     cur.close(); 
     ContentValues values = new ContentValues(); 
     values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, Integer.valueOf(base + audioId)); 
     values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, audioId); 
     resolver.insert(uri, values); 
    } 

    public static void removeFromPlaylist(ContentResolver resolver, int audioId) { 
     Log.v("made it to add",""+audioId); 
     String[] cols = new String[] { 
       "count(*)" 
     }; 
     Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", YOUR_PLAYLIST_ID); 
     Cursor cur = resolver.query(uri, cols, null, null, null); 
     cur.moveToFirst(); 
     final int base = cur.getInt(0); 
     cur.close(); 
     ContentValues values = new ContentValues(); 

     resolver.delete(uri, MediaStore.Audio.Playlists.Members.AUDIO_ID +" = "+audioId, null); 
    } 
+0

कैसे प्राप्त करें धन्यवाद, मुझे यकीन नहीं था कि क्या मैं अपने प्रश्नों का उत्तर दे सकता हूं :) – shaneburgess

+0

कोई विचार है कि नाम से एक नई प्लेलिस्ट कैसे बनाएं? –

+2

@aloneguid आप कोशिश कर सकते हैं: सार्वजनिक स्थैतिक शून्य बनाएँ प्लेलिस्ट (ContentResolver संकल्पक, स्ट्रिंग पीएनएएम) { उरी uri = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI; ContentValues ​​मान = नई सामग्रीवृत्त(); values.put (MediaStore.Audio.Playlists.NAME, pName); उरी newPlaylistUri = resolver.insert (यूरी, मान); Console.debug (TAG, "newPlaylistUri:" + newPlaylistUri, Console.Liviu); } –

2

करने के लिए उत्तर जारोस्लाव ज़ारुबा टिप्पणी, कोड अतिरिक्त ट्रैक सेट के PLAY_ORDER के साथ बेहतर है:

cur.moveToLast(); 
final int base = cur.getInt(cur.getColumnIndex(Playlists.Members.PLAY_ORDER)); 
cur.close(); 
ContentValues values = new ContentValues(); 
values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, 
     Integer.valueOf(base + 1)); 

दो प्रमुख चीजें बदलती हैं: हम प्लेलिस्ट (cur.moveToLast()) के अंतिम तत्व का उपयोग करते हैं और हम नए ट्रैक के PLAY_ORDER को निर्धारित करने के लिए अपने PLAY_ORDER मान में 1 जोड़ते हैं। बिंदु प्लेलिस्ट में लगातार ट्रैक होना है।

आप उदाहरण के लिए 10 भी जोड़ सकते हैं ताकि आप अपने नए ट्रैक से पहले या बाद में ट्रैक डालें। मैंने ट्रैक की आईडी प्राप्त करने के तरीके को भी बदल दिया। दरअसल हम गलत डेटा प्राप्त करने में कोई समस्या नहीं चाहते हैं, इसलिए हम जो कॉलम चाहते हैं उसे निर्दिष्ट करते हैं।

+2

लाने के लिए YOUR_PLAYLIST_ID कैसे प्राप्त करें –

0

इस कोड को जो प्लेलिस्ट से गाना निकालने में सुधार किया जाए:

public static void removeFromPlaylist(ContentResolver resolver, int audioId) 
{ 
Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", YOUR_PLAYLIST_ID); 
resolver.delete(uri, MediaStore.Audio.Playlists.Members._ID +" = "+audioId, null); 
} 
0

उपयोग इस कोड को अपने आप में आत्म व्याख्यात्मक है। यह नाम playlistName

साथ प्लेलिस्ट पहले से ही मौजूदा एक में जोड़ देगा तो मौजूद हैं दिया id = songID साथ गाना जोड़ सकते हैं या इसे नए पैदा करेगा और उसके बाद

/** 
    * This function add song with id songID to playlist playlistName 
    * if playlist does exist it will add to exiixting one or it will create new 
    * 
    * @param playlistName 
    * @param songID 
    */ 
    private void addToPlaylist(String playlistName, int songID) { 

     //Vibrate device 
     Utils.vibrate(getApplicationContext()); 

     //get all playlists 
     Cursor playListCursor = AppController.getGlobalContentResolvere().query(
       MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, new String[]{"*"}, null, null, 
       null); 

     long playlistId = 0; 

     playListCursor.moveToFirst(); 

     do { 

      //check if selected playlsit already exist 
      if (playListCursor.getString(playListCursor 
        .getColumnIndex(MediaStore.Audio.Playlists.NAME)). 
        equalsIgnoreCase(playlistName)) { 

       playlistId = playListCursor.getLong(playListCursor 
         .getColumnIndex(MediaStore.Audio.Playlists._ID)); 
       break; 
      } 
     } while (playListCursor.moveToNext()); 

     //Playlist doesnt exist creating new with given name 
     if (playlistId == 0) { 

      Log.d(TAG, "CREATING PLAYLIST: " + playlistName); 

      ContentValues playlisrContentValue = new ContentValues(); 

      //Add name 
      playlisrContentValue.put(MediaStore.Audio.Playlists.NAME, playlistName); 

      //update modified value 
      playlisrContentValue.put(MediaStore.Audio.Playlists.DATE_MODIFIED, 
        System.currentTimeMillis()); 

      Uri playlistURl = AppController.getGlobalContentResolvere().insert(
        MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, playlisrContentValue); 

      Log.d(TAG, "Added PlayLIst: " + playlistURl); 

     } else { 

      //Playlist alreay exist add to playlist 
      String[] cols = new String[]{ 
        "count(*)" 
      }; 

      Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlistId); 

      Cursor favListCursor = AppController.getGlobalContentResolvere().query(uri, cols, null, null, null); 

      favListCursor.moveToFirst(); 

      final int base = favListCursor.getInt(0); 

      //playlist updated delete older playlist art so that we can create new 
      Toast.makeText(AudioPlayerActivity.this, "deleted old file" + new File(AppContants.PLAY_LIST_DIR + playlistId + ".png").delete(), Toast.LENGTH_SHORT).show(); 

      favListCursor.close(); 

      //add song to last 
      ContentValues values = new ContentValues(); 

      values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, base + songID); 

      values.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, songID); 

      AppController.getGlobalContentResolvere().insert(uri, values); 


      //Debug purpose 
      Toast.makeText(AudioPlayerActivity.this, "Added to Favourite list " + 
          CenterRepository.getInstance().getAudioCollection().getSongAt(AppConfig.SONG_NUMBER).getTitle() 
        , Toast.LENGTH_SHORT).show(); 

     } 
    } 
संबंधित मुद्दे