封面艺术在android上

Moj*_*sin 26 android

我正在为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.


Hit*_*ahu 9

我不知道为什么每个人都这么复杂,只需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将为您处理缓存,缩放和延迟加载图像.

希望它对某人有所帮助.


Alt*_*ikh 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;
}
Run Code Online (Sandbox Code Playgroud)