android-从音频数据库获取音乐数据

android-从音频数据库获取音乐数据


在android中,手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如音频,视频,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。


在android在的data/data下有一个数据库,专门用于存放媒体数据。

此数据库的具体路径位于data/data/com.android.providers.media/databases下:

android-从音频数据库获取音乐数据_第1张图片android-从音频数据库获取音乐数据_第2张图片android-从音频数据库获取音乐数据_第3张图片android-从音频数据库获取音乐数据_第4张图片



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



你可能感兴趣的:(android)