封面艺术在android上

时间:2009-12-23 18:12:55

标签: android

我正在为android开发一种媒体播放器。问题是如何在android上获得音频文件的封面艺术。 例如,默认的Android媒体播放器在列出专辑时显示专辑封面,我该如何获得这些艺术作品。

7 个答案:

答案 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开发者网站,我发现了这个:

MediaStore.Audio.AlbumColumns

希望它会有所帮助。