android 获取系统和SD卡音乐
获取android系统内置的音乐。
ContentResolver resolver = getContentResolver();
Cursor c = resolver.query(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
// Cursor就能得到系统的音乐
c.moveToNext();没有获取数据就moveToNext是因为c的默认参数是-1而不是0,如果不写这句就会报错
CursorIndexOutOfBoundsException
do {
// System.out.println("TAG+++GAT" + c.getString(1));
SongData songData = new SongData();
songData.setFilename(c.getString(1));
songData.setSongname(c.getString(2));
// Log.e("TGA", c.getString(2));
arrayList.add(songData);
} while (c.moveToNext());
c.close();
红色标注的是获取系统内置音乐的参数。
MediaStore.Audio.Media.INTERNAL_CONTENT_URI?是获取系统内置音乐的参数
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 是获取系统外置SD卡音乐的参数。
c.getString(index)中index每个参数的含义如下:
//--------song是写的一个类文件,主要用来存放获取的内容------------
????????????? song.setFilename(cursor.getString(1));//文件名
????????????? song.setTitle(cursor.getString(2));//歌曲名
????????????? song.setDuration(cursor.getInt(3));//时长
????????????? song.setSinger(cursor.getString(4));//歌手名
????????????? song.setAlbum(cursor.getString(5));//专辑名
????????????? if (cursor.getString(6) != null) {//年代
?????????????????? song.setYear(cursor.getString(6));
????????????? } else {
?????????????????? song.setYear("未知");
????????????? }
????????????? if ("audio/mpeg".equals(cursor.getString(7).trim())) {//歌曲格式
?????????????????? song.setType("mp3");
????????????? } else if ("audio/x-ms-wma".equals(cursor.getString(7).trim())) {
?????????????????? song.setType("wma");
????????????? }
????????????? if (cursor.getString(8) != null) {//文件大小
?????????????????? float temp = cursor.getInt(8) / 1024f / 1024f;
?????????????????? String sizeStr = (temp + "").substring(0, 4);
?????????????????? song.setSize(sizeStr + "M");
????????????? } else {
?????????????????? song.setSize("未知");
????????????? }
????????????? if (cursor.getString(9) != null) {//文件路径
?????????????????? song.setFileUrl(cursor.getString(9));
????????????? }
//--------------------------
?
?