我正在为android开发一种媒体播放器.问题是如何在android上获得音频文件的封面艺术.例如,默认的Android媒体播放器在列出相册时显示专辑封面,我该如何获得这些作品.
Fed*_*dor 46
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
ContentResolver res = context.getContentResolver();
InputStream in = res.openInputStream(uri);
Bitmap artwork = BitmapFactory.decodeStream(in);
Run Code Online (Sandbox Code Playgroud)
更完整的示例代码可以在Android音乐播放器源代码中找到https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/MusicUtils.java方法getArtworkQuick.
我不知道为什么每个人都这么复杂,只需1行代码就可以使用Glide以最简单有效的方式实现这一目标
在App常量中声明此路径 -
final public static Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Run Code Online (Sandbox Code Playgroud)
使用相册ID获取图像Uri
Uri uri = ContentUris.withAppendedId(PlayerConstants.sArtworkUri,
listOfAlbums.get(position).getAlbumID());
Run Code Online (Sandbox Code Playgroud)
现在只需使用uri显示专辑封面: -
Glide.with(context).load(uri).placeholder(R.drawable.art_default).error(R.drawable.art_default)
.crossFade().centerCrop().into(holder.albumImage);
Run Code Online (Sandbox Code Playgroud)
Glide将为您处理缓存,缩放和延迟加载图像.
希望它对某人有所帮助.
您可以使用
MediaMetadataRetriever
课程和获取跟踪信息,如标题,艺术家,专辑,图像
Bitmap GetImage(String filepath) //filepath is path of music file
{
Bitmap image;
MediaMetadataRetriever mData=new MediaMetadataRetriever();
mData.setDataSource(filePath);
try{
byte art[]=mData.getEmbeddedPicture();
image=BitmapFactory.decodeByteArray(art, 0, art.length);
}
catch(Exception e)
{
image=null;
}
return image;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26380 次 |
| 最近记录: |