获取到Android设备的本地音乐,并显示音乐的时长,专辑图片,音乐名字以及歌手姓名等。当设备从播放器中下载音乐的时候,这些信息都会存储到设备中。我们获取的时候可以通过设备暴露给我们的ContentProvider接口去查询这些信息。ok,话不多说,上代码。
首先我们要定义一个名字叫Song的bean文件,用来保存歌曲的信息。
public class Song {
public String name;//歌曲名
public String singer;//歌手
public long size;//歌曲所占空间大小
public int duration;//歌曲时间长度
public String path;//歌曲地址
public long albumId;//图片id
public long id;//歌曲id
public long getAlbumId()
{
return albumId;
}
public void setAlbumId(long albumId)
{
this.albumId = albumId;
}
public long getId()
{
return id;
}
public void setId(long id)
{
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
代码中的解释很详细了。
接下来我们要创建一个LocalMusicUtils来获取我们设备本地的音乐。首先通过getContentResolver()获取到contentPervider的cursor对象。
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
, null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
然后遍历cursor中的数据
if (cursor != null) {
while (cursor.moveToNext()) {
song = new Song();
name = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));
id = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
singer = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.D