2017-08-01 70 views
0

我创建一个使用下一个方法新的播放列表:如何添加一些文件到播放列表

ContentResolver resolver = getContentResolver(); 
ContentValues value = new ContentValues(); 
value.put(MediaStore.Audio.Playlists.NAME, "Name PlayList"); 
value.put(MediaStore.Audio.Playlists.DATE_MODIFIED, System.currentTimeMillis()); 
resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, value); 

我的mp3文件列表(ArrayList<File>)。

如何将这些文件添加到新播放列表中?

+0

请参阅'android.provider.MediaStore.Audio.Playlists.Members' – pskink

+0

,这里有一些示例代码:https://gist.github.com/dzwillpower/5866205#file-musicutils-java-L455,请参阅第475-480行 – pskink

+0

@pskink,你能解释一下,代码示例中的int [] ids'是什么? – Roman

回答

0

在我来说,我只有文件的列表,所以起初我需要使用文件路径来获得音频ID:

public static long getTrackIdByPath(Context context, String pathToFile){ 
long id = - 1; 
String[] projection = {MediaStore.Audio.Media._ID, 
         MediaStore.Audio.Media.DATA}; 
String selection = MediaStore.Audio.Media.DATA + " like ?"; 
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
     projection, selection, 
     new String[] {pathToFile}, null); 
cursor.moveToFirst(); 
if(cursor.getCount() > 0) 
    id = cursor.getLong(0); 
cursor.close(); 
return id; 

在那之后,我可以添加音频到播放列表:

ContentResolver resolver = getContentResolver(); 
long trackId = getTrackIdByPath(context, pathToFile); 
    Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playListId); 
    Cursor cursor = resolver.query(uri, new String[] {"count(*)"}, null, null, null); 
    cursor.moveToFirst(); 
    int last = cursor.getInt(0); 
    cursor.close(); 
    ContentValues value = new ContentValues(); 
     value.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER, ++last); 
     value.put(MediaStore.Audio.Playlists.Members.AUDIO_ID, trackId); 

    resolver.insert(uri, value); 
相关问题