当前位置: 代码迷 >> Android >> 怎的获取安卓系统文件中的MP3,和获取MP3的时长
  详细解决方案

怎的获取安卓系统文件中的MP3,和获取MP3的时长

热度:42   发布时间:2016-05-01 10:41:39.0
怎样获取安卓系统文件中的MP3,和获取MP3的时长
我在做一个安卓的音乐播放器,但是要求要遍历系统所有的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 字段是显示名称
------解决方案--------------------
引用:
我已经得到了MP3的一个文件对象,我想在想查询他的时长,用以下代码:您看这样对吗?

ContentResolver mResolver = ctx.getContentResolver();

Cursor cursor = mResolver.query(MediaStore.Audio.Media.DURATION , null, null, null, null);
我想问下,query方法的第二个参数说是用string[]数组代替,这是在哪获取的?

不对
用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
  相关解决方案