欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-03-08 17:48:39
android系统提供了mediascanner,mediaprovider,mediastore等接口,并且提供了一套数据库表格,通过content provider的方...

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