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));
                }

//--------------------------

 系统的铃声分为多种,如果直接获取系统铃声可能把电话铃声,短信铃声,通知铃声全部获取了。所有的系统铃声都在ROM中的frameworks/base/data/sounds/文件夹下(如果有兴趣搞ROM可以自己下载一下Google 官方源码,自己看一下sounds文件下的目录结构)

只想获取系统的电话铃声:

Cursor c = resolver.query(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,

       new String[] { MediaStore.Audio.Media._ID,

               MediaStore.Audio.Media.DATA,

               MediaStore.Audio.Media.TITLE }, "is_ringtone != ?",

       new String[] { "0" }, "_id asc");

 

 

猜你喜欢

转载自dzy-123.iteye.com/blog/1928365
今日推荐