我正在尝试从MediaStore查询设备中的播放列表.我之前提出过一个问题,但我没有得到答案.
这是我查询播放列表的方式
public voID addtoplayList(long playListID, Context context, ArrayList<Play> playListTracks, String playListname) { int count = getPlayListSize(playListID, context); Log.d("playList size=", "" + count); ContentValues[] values = new ContentValues[playListTracks.size()]; for (int i = 0; i < playListTracks.size(); i++) { values[i] = new ContentValues(); values[i].put(MediaStore.Audio.PlayLists.Members.PLAY_ORDER, i + count + 1); values[i].put(MediaStore.Audio.PlayLists.Members.AUdio_ID, playListTracks.get(i).getID()); values[i].put(MediaStore.Audio.PlayLists.name, playListname); } ContentResolver resolver = context.getContentResolver(); Uri uri = MediaStore.Audio.PlayLists.Members.getContentUri("external", playListID); int num = resolver.bulkInsert(uri, values); Log.d("songs added=", "" + num); // added resolver.notifyChange(Uri.parse("content://media"), null);}private int getPlayListSize(long playListID, Context context){ // Todo: Implement this method return 0;}public voID retrIEveAllPlayLists(Context context) { Uri tempPlayListURI = MediaStore.Audio.PlayLists.EXTERNAL_CONTENT_URI; final String IDKey = MediaStore.Audio.PlayLists._ID; final String nameKey = MediaStore.Audio.PlayLists.name; final String[] columns = { IDKey, nameKey }; Cursor playListCursor = context.getContentResolver().query( tempPlayListURI, columns, null, null, null); if (playListCursor != null) { Log.d("playList cursor count=", "" + playListCursor.getCount()); for (boolean hasItem = playListCursor.movetoFirst(); hasItem; hasItem = playListCursor .movetoNext()) { playListname = playListCursor.getString(playListCursor .getColumnIndex(nameKey)); // noOfTracks = playListCursor.getInt(playListCursor // .getColumnIndex(tracksCountKey)); Log.d(this.getClass().getname(), "playListname=" + playListname // returns only default playListsthe + "tracks=" + noOfTracks); playListModel.add(new Play(playListname, noOfTracks)); } }}
我得到的只是一个空白屏幕.请指导我
解决方法:
创建播放列表的简单方法是:
public voID addnewPlayList(Context context, String newplayList) { ContentResolver resolver = context.getContentResolver(); ContentValues values = new ContentValues(1); values.put(MediaStore.Audio.PlayLists.name, newplayList); resolver.insert(uri, values);}
然后填充播放列表:
public voID addTracktoplayList(Context context, String audio_ID, long playList_ID, int pos) { Uri newuri = MediaStore.Audio.PlayLists.Members.getContentUri( "external", playList_ID); ContentResolver resolver = context.getContentResolver(); ContentValues values = new ContentValues(); values.put(MediaStore.Audio.PlayLists.Members.PLAY_ORDER, pos); values.put(MediaStore.Audio.PlayLists.Members.AUdio_ID, audio_ID); values.put(MediaStore.Audio.PlayLists.Members.PLAYList_ID, playList_ID); resolver.insert(newuri, values);}
查看代码,您不会构建正确的结构.播放列表不包含播放列表名称,只包含PlayList_ID.
要返回所有播放列表:
public Cursor getandroidplayListcursor(Context context) { ContentResolver resolver = context.getContentResolver(); final String ID = MediaStore.Audio.PlayLists._ID; final String name = MediaStore.Audio.PlayLists.name; final String[] columns = { ID, name }; final String criteria = null return resolver.query(uri, columns, criteria, null, name + " ASC");}
总结 以上是内存溢出为你收集整理的android – 从MediaStore查询播放列表全部内容,希望文章能够帮你解决android – 从MediaStore查询播放列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)