android-从音频数据库获取音乐数据
在android中,手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如音频,视频,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。
在android在的data/data下有一个数据库,专门用于存放媒体数据。
此数据库的具体路径位于data/data/com.android.providers.media/databases下:
java代码-拿到audio数据表中的数据
拿到ContentResolver对象
ContentResolver contentResolver = getContentResolver();//获得内容解析者
查到a
udio数据表,得到一个Cursor
Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
参数一: MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,//uri,这里的uri是外置存储
参数二: null,// 字段 没有字段 就是查询所有信息 相当于SQL语句中的 “ * ”
参数三: null, // 查询条件
参数四: null, // 条件的对应?的参数
参数五: null;// 排序方式
将查到的各字段数据存入集合中
/*
private String _data, title, artist, album;//路径,歌名,歌手,专辑
private int _size, duration;//大小,时长
*/
String music_data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));//歌曲路径
String musictitle = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));//歌曲名字
String musicartist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));//歌曲歌手
String musicalbum = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));//歌曲专辑
String music_size = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));//歌曲大小
String musicduration = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));//歌曲时长
arrayList.add(new MusicData(music_data, musictitle, musicartist, musicalbum, Long.parseLong(music_size), Long.parseLong(musicduration)));