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(安卓)APN设置 获取APN列表
  2. Android(安卓)WIFI 类分析
  3. Android(安卓)Debug Bridge(adb, Android调试桥) 与 Log
  4. [Android]发布Sqlite数据库
  5. Android(安卓)使用adb shell 和android studio插件Database Navi
  6. [Android] 导入外部数据库
  7. Android日志分析
  8. Android(安卓)Sqlite数据库转义字符模糊查询
  9. Android(安卓)Log详解!

随机推荐

  1. Android(安卓)WebView实现缓存
  2. Get Android(安卓)source
  3. Android之AlertDialog.Builder详解
  4. Android(安卓)应用文件路径
  5. Android操作SQLite数据库基本模式
  6. 2020-08-11
  7. Android(安卓)MD5加密
  8. android 文件管理工具类
  9. Android如何在xml布局中使用自定义属性
  10. Android(安卓)flutter http请求