我在做一个安卓的音乐播放器,但是要求要遍历系统所有的MP3文件,以前只做过遍历sdcard中的,要用什么方法获取系统中的啊?还有就是要求要在音乐列表中显示文件的时长,以前只会用getduration();方法,现在在播放之前就要获取时长,怎么才能得到?求大神解答,急,,,,,,,,,,,
音乐 遍历 Android mp3
------解决方案--------------------
用ContentResolver去query MediaStore.Audio.Media.EXTERNAL_CONTENT_URI这个数据库
MediaStore.Audio.Media.TITLE 字段是曲名
MediaStore.Audio.Media.ARTIST 字段是歌手
MediaStore.Audio.Media.ARTIST 字段是专辑
MediaStore.Audio.Media.DURATION 字段是时间 单位是毫秒
MediaStore.Audio.Media.DATA 字段是文件位置
MediaStore.Audio.Media.DISPLAY_NAME 字段是显示名称
------解决方案--------------------
不对
用contentResolver.query()方法访问数据库直接得到的是满足selection的所有曲目
返回的结果是一个cursor
你需要自己遍历这个cursor来获得这些曲目每一条的所有信息
例如这个方法可以获取手机上包括SD卡中所有长度大于10秒且是音乐的音频文件
private ArrayList<Music> queryMusics() {
ArrayList<Music> musiclistResult = new ArrayList<Music>();
ContentResolver cr = this.getContentResolver();
Cursor musics = cr.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {
MediaStore.Audio.Media._ID, // int
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.DATA, // String
MediaStore.Audio.Media.DISPLAY_NAME, // String
MediaStore.Audio.Media.MIME_TYPE // String
},
MediaStore.Audio.Media.IS_MUSIC + " = 1 AND "
+ MediaStore.Audio.Media.DURATION + " > 10000",
null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
Log.d("", "musics : " + musics.getCount());
musics.moveToFirst();
while (!musics.isAfterLast()) {
Music temp = new Music();
temp._ID = musics.getInt(musics.getColumnIndex(MediaStore.Audio.Media._ID));
temp.ALBUM = musics.getString(musics.getColumnIndex(MediaStore.Audio.Media.ALBUM));
temp.ARTIST = musics.getString(musics.getColumnIndex(MediaStore.Audio.Media.ARTIST));
temp.DATA = musics.getString(musics.getColumnIndex(MediaStore.Audio.Media.DATA));
temp.DURATION = musics.getLong(musics.getColumnIndex(MediaStore.Audio.Media.DURATION));
temp.TITLE = musics.getString(musics.getColumnIndex(MediaStore.Audio.Media.TITLE));
temp.isExist = true;
musiclistResult.add(temp);
musics.moveToNext();
}
musics.close();
return musiclistResult;
}
/**
* 音乐的信息
*
* @author BabyBeaR