封面上的艺术

我正在开发一种Android的媒体播放器。 问题是我怎样才能得到在Android上的audio文件的封面艺术。 例如,默认的Android媒体播放器在列出相册时显示专辑封面,我如何获得这个作品。

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音乐播放器源代码中findhttps://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/MusicUtils.java方法getArtworkQuick。

我不知道为什么每个人都这么复杂,你可以使用Glide以最简单有效的方式实现这一点,只需要一行代码

在App常量中声明这个path –

 final public static Uri sArtworkUri = Uri .parse("content://media/external/audio/albumart"); 

使用相册ID获取图像Uri

 Uri uri = ContentUris.withAppendedId(PlayerConstants.sArtworkUri, listOfAlbums.get(position).getAlbumID()); 

现在只需使用uri显示专辑封面:

  Glide.with(context).load(uri).placeholder(R.drawable.art_default).error(R.drawable.art_default) .crossFade().centerCrop().into(holder.albumImage); 

滑翔将为您处理caching,缩放和延迟加载的图像。

希望它能帮助别人。

您可以使用

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; } 

根据你对其他人的评论,似乎你的问题不是关于Android,而是关于如何获得专辑封面的更多信息。 也许这篇关于从亚马逊检索专辑封面的文章将会很有帮助。 一旦你有一个本地副本,并存储它尼克build议,我相信你应该能够像Fudgeybuild议的方式检索它。

在这里,我可以附加一个function,即从媒体商店返回专辑封面。

在这里,我们只需要通过我们从媒体商店得到的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; } 

Android仅识别名为“AlbumArt.jpg”的文件作为唱片集封面。 只要把这个名字的图片放在专辑文件夹中就可以了。

我不知道你是否读了谷歌正在使Stackoverflow的官方Android应用程序开发问答中,但对于初学者的问题…现在,我不知道在开发的Andriod,但快速search的Android开发者网站,我发现这:

MediaStore.Audio.AlbumColumns

希望它会有所帮助。