Android中通过MediaStore获取音乐文件信息方法

作者:junjie 时间:2021-09-30 17:53:24 

Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文件,只要了解如何查询和使用这些信息就可以了。

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:指定查询结果的排列顺序
下面的命令将返回所有在外部存储卡上的音乐文件的信息:


Cursor cursor = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);


得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:
歌曲ID:MediaStore.Audio.Media._ID


Int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));

歌曲的名称 :MediaStore.Audio.Media.TITL


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


歌曲文件的名称:MediaStroe.Audio.Media.DISPLAY_NAME


String display_name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));

歌曲文件的发行日期:MediaStore.Audio.Media.YEAR


String year = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.YEAR));


歌曲的总播放时长 :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));

标签:Android,MediaStore,音乐文件信息
0
投稿

猜你喜欢

  • SpringBoot文件访问映射如何实现

    2022-07-22 00:36:07
  • Java流程控制顺序结构原理解析

    2022-09-13 14:14:03
  • android实现条目倒计时功能

    2023-08-23 08:35:38
  • Android中ADB命令用法大结局

    2022-12-18 10:36:28
  • Windows系统安装JDK小结

    2022-07-16 02:49:57
  • Java汉字转拼音工具类完整代码实例

    2021-07-09 21:32:18
  • 全面分析Java文件上传

    2021-12-09 13:22:52
  • Java实现的校验银行卡功能示例

    2022-01-28 19:33:53
  • C# 获取硬件参数的实现方法

    2023-11-04 21:30:38
  • C# PictureBox控件方法参数及图片删除重命名上传详解

    2023-02-04 17:59:08
  • Android多媒体应用使用MediaPlayer播放音频

    2023-07-08 15:37:52
  • java8中:: 用法示例(JDK8双冒号用法)

    2023-11-25 06:21:21
  • Android WebView那些坑之上传文件示例

    2022-10-29 02:31:15
  • SpringBoot入坑笔记之spring-boot-starter-web 配置文件的使用

    2021-12-15 13:11:46
  • C# 模式匹配完全指南

    2023-11-01 17:55:52
  • 基于ArrayList源码解析(基于JDK1.8)

    2021-10-07 18:34:25
  • bs架构和cs架构的区别_动力节点Java学院整理

    2021-09-18 22:06:18
  • springboot+springsecurity如何实现动态url细粒度权限认证

    2023-10-01 04:06:39
  • Java并发之ReentrantLock类源码解析

    2022-08-09 18:10:35
  • MyBatis中不建议使用where 1=1原因详解

    2021-08-09 23:25:55
  • asp之家 软件编程 m.aspxhome.com