用户登录
用户注册

分享至

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

  • 作者: 倪坚强
  • 来源: 51数据库
  • 2021-11-22

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

软件
前端设计
程序设计
Java相关