我正在为android开发一种媒体播放器。问题是如何在android上获得音频文件的封面艺术。 例如,默认的Android媒体播放器在列出专辑时显示专辑封面,我该如何获得这些艺术作品。
答案 0 :(得分:45)
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);
可以在Android音乐播放器源代码中找到更完整的示例代码https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/MusicUtils.java方法getArtworkQuick。
答案 1 :(得分:9)
我不知道为什么每个人都这么复杂,只需1行代码就可以使用Glide以最简单有效的方式实现这一目标
在App Constants中声明此路径 -
var raphael = require("raphael")
使用相册ID获取图片Uri
final public static Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
现在只需使用uri显示专辑封面: -
Uri uri = ContentUris.withAppendedId(PlayerConstants.sArtworkUri,
listOfAlbums.get(position).getAlbumID());
Glide将为您处理图像的缓存,缩放和延迟加载。
希望对某人有所帮助。
答案 2 :(得分:6)
您可以使用
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;
}
答案 3 :(得分:3)
在这里,我可以附加一个从媒体商店返回专辑封面的功能。
在功能中,我们只需传递从Media store获得的album_id。
public Bitmap getAlbumart(Long album_id)
{
Bitmap bm = null;
try
{
final Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
ParcelFileDescriptor pfd = context.getContentResolver()
.openFileDescriptor(uri, "r");
if (pfd != null)
{
FileDescriptor fd = pfd.getFileDescriptor();
bm = BitmapFactory.decodeFileDescriptor(fd);
}
} catch (Exception e) {
}
return bm;
}
答案 4 :(得分:2)
根据您对其他人的评论,似乎您的问题不是关于Android,而是关于如何获得专辑封面的更多信息。从亚马逊检索专辑封面时,this article可能会有所帮助。一旦你有本地副本并按照尼克的建议存储它,我相信你应该能够像福吉建议的那样检索它。
答案 5 :(得分:0)
Android只识别名为“AlbumArt.jpg”的文件作为专辑封面。只需将具有该名称的图片放在相册文件夹中,您就可以了。
答案 6 :(得分:0)
我不知道你是否认为谷歌正在使Stackoverflow成为official Android app development Q&A medium但是对于初学者的问题......现在,我对andriod的开发一无所知,但快速搜索Android开发者网站,我发现了这个:
希望它会有所帮助。