其实实现音乐中的专辑图像提取是相当的容易的,网上大多的资料都是比较扯淡的,其实就几行代码而已。

看下面代码之前,我们所要做的工作是通过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;

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐