MediaStore这个类是  android系统提供的一个多媒体数据库,android中多媒体信息都可以从这里提取。这个MediaStore包括了多媒体数据库的所有信息,包括音频 ,视频和图像,android把所有的多媒体数据库接口进行了封装,所有的数据库不用自己进行创建,直接调用利用ContentResolver去掉用那些封装好的接口就可以进行数据库的操作了
MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。下面我们重点介绍查询SD卡上的音乐文件信息。
  先来了解一下ContentResolver的查询接口:
Cursor  query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder);
        Uri:指明要查询的数据库名称加上表的名称,从MediaStore中我们可以找到相应信息的参数,具体请参考开发文档。 
        Projection: 指定查询数据库表中的哪几列,返回的游标中将包括相应的信息。Null则返回所有信息。
        selection: 指定查询条件
        selectionArgs:参数selection里有 ?这个符号是,这里可以以实际值代替这个问号。如果selection这个没有?的话,那么这个String数组可以为null。
        SortOrder:指定查询结果的排列顺序
下面的命令将返回所有在外部存储卡上的音乐文件的信息:
[code]Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,  
                null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);  [/code]
得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:

歌曲ID:MediaStore.Audio.Media._ID 
Int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));   播放音频就是通过这个ID来索引   
歌曲的名称 :MediaStore.Audio.Media.TITLE
String tilte = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));  
  
歌曲的专辑名:MediaStore.Audio.Media.ALBUM 
String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));  
  
  
歌曲的歌手名: MediaStore.Audio.Media.ARTIST 
String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));  
  
歌曲文件的路径 :MediaStore.Audio.Media.DATA 
String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));   路径转为URI用 Uri.fromFile(new File(url));   
歌曲的总播放时长 :MediaStore.Audio.Media.DURATION
Int duration = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));  
  
歌曲文件的大小 :MediaStore.Audio.Media.SIZE  Int size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE)); 
还有一些其他的 看代码吧. 
// 获取歌曲详细信息String[] colums = {MediaStore.Audio.Media.DATA,// 歌曲文件的路径MediaStore.Audio.Media._ID,// 歌曲IDMediaStore.Audio.Media.TITLE,// 歌曲标题MediaStore.Audio.Media.DISPLAY_NAME,// 歌曲名称MediaStore.Audio.Media.MIME_TYPE,// 歌曲的播放格式MediaStore.Audio.Media.ARTIST,// 歌曲的歌手名MediaStore.Audio.Media.ALBUM,// 歌曲的唱片集MediaStore.Audio.Media.IS_RINGTONE,//MediaStore.Audio.Media.IS_ALARM,// 歌曲的专辑名MediaStore.Audio.Media.IS_MUSIC,//MediaStore.Audio.Media.IS_NOTIFICATION,//MediaStore.Audio.Media.DURATION // 歌曲的总播放时长};// 调用 managedQuery()来查询MediaStore@SuppressWarnings("deprecation")Cursor cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,colums, null, null, null);// 获得索引int fileColumn = cursor.getColumnIndex(MediaStore.Audio.Media.DATA);int titleColumn = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE);int displayColumn = cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME);int mimeTypeColumn = cursor.getColumnIndex(MediaStore.Audio.Media.MIME_TYPE);// moveToFirst() 获得返回的第一个结果if (cursor.moveToFirst()) {String audioFilePath = cursor.getString(fileColumn);// 路径String mimeType = cursor.getString(mimeTypeColumn);// mime类型// 获取mime之后就可以用意图启动内置的音频播放器 或者用MediaPlayer播放// 构造一个file对象并调用Uri.fromFile来获取UriIntent intent = new Intent(android.content.Intent.ACTION_VIEW);File newFile = new File(audioFilePath);intent.setDataAndType(Uri.fromFile(newFile), mimeType);startActivity(intent);}


参考了   关于MediaStore字段的详细描述

更多相关文章

  1. Android Sqlite数据库转义字符模糊查询
  2. [Android] 导入外部数据库
  3. Android 使用adb shell 和android studio插件Database Navigator
  4. 查看Sqlite 数据库
  5. Android系统信息获取 之四:系统语言信息获取
  6. Android 多媒体数据库
  7. Android SQLiteOpenHelper Sqlite数据库的创建与打开
  8. 使用android快速开发框架afinal的FinalDb操作android sqlite数据

随机推荐

  1. Android全局处理异常
  2. android编写Service入门
  3. android 幕滑动效果
  4. Android分页控件xlistview
  5. Android之布局onClick属性写法规则
  6. gradle学习二
  7. Android使用Volley保持与服务器的会话
  8. 浅谈Android辅助功能 AccessibilityServi
  9. unity重写软键盘for Android(安卓)NGUI
  10. Android Code Style Rules