其实实现音乐中的专辑图像提取是相当的容易的,网上大多的资料都是比较扯淡的,其实就几行代码而已。
看下面代码之前,我们所要做的工作是通过mediaplayer已经获取到了音乐文件中的诸多信息:
MediaStore.Audio.Media.TITLE,// 标题
MediaStore.Audio.Media.DURATION,// 持续时间
MediaStore.Audio.Media.ARTIST,// 艺术家
MediaStore.Audio.Media._ID,// id
MediaStore.Audio.Media.DISPLAY_NAME,// 显示名称
MediaStore.Audio.Media.DATA,// 数据
MediaStore.Audio.Media.ALBUM_ID,// 专辑名称ID
MediaStore.Audio.Media.ALBUM,// 专辑
MediaStore.Audio.Media.SIZE }, null, null, MediaStore.Audio.Media.ARTIST);// 大小,
其中我们需要的是MediaStore.Audio.Media.ALBUM_ID(即一下代码中的int id)
private void getImage(int id)
{
int album_id = id;
String albumArt = getAlbumArt(album_id);
Bitmap bm = null;
if (albumArt == null)
{
mImageView.setBackgroundResource(R.drawable.noalbum);
}
else
{
bm = BitmapFactory.decodeFile(albumArt);
BitmapDrawable bmpDraw = new BitmapDrawable(bm);
((ImageView) mImageView).setImageDrawable(bmpDraw);
}
}
private String getAlbumArt(int album_id)
{
String mUriAlbums = "content://media/external/audio/albums";
String[] projection = new String[] { "album_art" };
Cursor cur = this.getContentResolver().query( Uri.parse(mUriAlbums + "/" + Integer.toString(album_id)), projection, null, null, null);
String album_art = null;
if (cur.getCount() > 0 && cur.getColumnCount() > 0)
{ cur.moveToNext();
album_art = cur.getString(0);
}
cur.close();
cur = null;
return album_art;
}