这是我写的获取信息得方法
public List<Mp3Info> getMp3Infos(String c){
Cursor cursor = null;
if(c.equals("songs")){//songs list
cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
}
else if(c.equals("artists")){//artists list
cursor = getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Artists.DEFAULT_SORT_ORDER);
}
else if(c.equals("albums")){//albums list
cursor = getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER);
}
else if(c.equals("playlist")){//play list
cursor = getContentResolver().query(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Playlists.DEFAULT_SORT_ORDER);
}
List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();
int i;
for(i = 0, cursor.moveToFirst(); i < cursor.getCount(); ++i){
Mp3Info mp3info = new Mp3Info();
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
int isMusic = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));
if(isMusic != 0){
mp3info.title = title;
mp3info.album = album;
mp3info.artist = artist;
mp3info.duration = duration;
mp3Infos.add(mp3info);
}
cursor.moveToNext();
}
return mp3Infos;
}
使用cursor的时候不需要循环吧?
但是我SD卡中有2个音频文件,却只显示一条信息。
把那个循环改为这个呢?
`
cursor.movetofirst()
while(cursor.moveToNext()){
//你的操作
}
`
我感觉是你那里的循环有点问题,但又不确定,你可以在循环里面打印个信息在logcat里面查看一下,看看它循环了几次~
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。