1、Android R获取专辑图
因为Android存储策略升级,不可使用常规方法访问Android/data来获取专辑图,因此使用以下新代码:
//常规
String mUriAlbums = "content://media/external/audio/albums";
String[] projection = new String[]{"album_art"};
Cursor cur = context.getContentResolver().query(
Uri.parse(mUriAlbums + "/" + albumId),
projection, null, null, null);
String album_art = null;
if (cur.getCount() > 0 && cur.getColumnCount() > 0) {
cur.moveToNext();
album_art = cur.getString(0);
Log.d("getalbum", "getAlbumArt: "+ album_art + "*" + cur.getString(0));
}
cur.close();
cur = null;
return BitmapFactory.decodeFile(album_art);
//Android R新方法(待优化)
MediaMetadataRetriever mmr = new MediaMetadataRetriever();//主要1
Log.d(TAG, "path:" + mediaPath);
try
{
mmr.setDataSource(mediaPath);//主要2
byte[] pic = mmr.getEmbeddedPicture(); //主要3
Bitmap songalbum = null;
songalbum = BitmapFactory.decodeByteArray(pic,0,pic.length);//主要4
Log.d(TAG,"picture:"+ songalbum.getWidth() + "x" + songalbum.getHeight());
return songalbum;
}
catch (Exception e)
{
e.printStackTrace();
mmr.setDataSource(mediaPath);
Bitmap songalbum = null;
songalbum = BitmapFactory.decodeResource(context.getResources(), R.drawable.music_default_album);
return songalbum ;
}
}