我正在開發一種Android的媒體播放器。問題是我如何才能在android上獲得音頻文件的封面藝術。 例如,默認安卓媒體播放器在列出相冊時會顯示專輯封面,如何獲取此作品。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音樂播放器源代碼中找到https://github.com/android/platform_packages_apps_music/blob/master/src/com/android/music/MusicUtils.java方法getArtworkQuick。
我嘗試了上面的代碼,我能夠在模擬器上獲得專輯封面,但在我的Galaxy S上沒有正確的順序,我可以看到專輯封面MP3,我有超過100個文件。在我的Galaxy S上還有一首這樣的歌曲,它顯示了錯誤歌曲的形象(只有最上面的歌曲)。任何建議來解決這個問題? – 2011-07-05 19:53:02
這是我的錯誤,而不是專輯ID,我通過歌曲ID。它的工作現在很好。謝謝 – 2011-07-05 20:27:01
嘿...你怎麼得到一首特定歌曲的albumid? – 2013-06-27 11:31:26
Android只識別名爲「AlbumArt.jpg」的文件作爲唱片集封面。只要把這個名字的圖片放在相冊文件夾中,你就會好起來的。
對不起,也許這個問題有點混亂。我正在開發一個應用程序,我想從我的應用程序中獲取專輯封面。 – 2009-12-23 18:26:36
我不知道你是否讀過谷歌正在使Stackoverflow的official Android app development Q&A medium,但對於初學者的問題......現在,我什麼都不知道有關Andriod的發展,但快速搜索Android開發者網站,我發現這一點:
希望對大家有所幫助。
是的,我也注意到有MediaStore.Audio.AudioColumns.ALBUM_ART,但它不存在actual.ContentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null); - 返回所有列的光標,ALBUM_ART不在那裏。 – 2009-12-23 22:19:36
光標中只有ALBUM,ALBUM_ID,ALBUM_KEY列,但沒有ALBUM_ART – 2009-12-23 22:28:17
根據你對他人的評論,你的問題似乎不是關於Android,而是更多關於如何獲得專輯封面的一般信息。也許this article從亞馬遜檢索專輯封面將會很有幫助。一旦你有本地副本並按照Nick的建議存儲它,我相信你應該能夠按照Fudgey的建議進行檢索。
不,我不想一般地拿到專輯封面。在封面藝術的ID3v2標籤中有可選的字段。 Android是解析大部分ID3v2字段,問題是如何讓ID3v2標記中的嵌入式隱祕藝術不使用亞馬遜或其他一些網絡服務 – 2010-01-03 15:02:04
也許這個問題有點混淆,也許正確的解決方法是從附件中提取「附加圖片」 Android上的ID3v2標籤。 http://www.id3.org/id3v2.3.0關於附加圖片的更多信息 – 2010-01-03 15:06:49
在這裏,我可以附加一個功能,即從媒體商店返回專輯封面。
在這裏,我們只需要通過我們從媒體商店獲得的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;
}
您可以使用
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;
}
我不知道爲什麼每個人都使它變得如此複雜,你可以使用Glide來achi前夕這在最簡單的和與只有1行代碼
有效的方式聲明這個路徑中應用的常量 -
final public static Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
獲取圖像的Uri使用相冊ID
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);
glide將處理緩存,scali ng和延遲加載圖像給你。
希望它有助於某人。
感謝哥們這對我有用.... – redblood 2016-03-27 00:22:33
- 1. Android中的封面藝術
- 2. 在Android上添加封面藝術到已下載的mp3
- 3. 緩存的iTunes封面藝術
- 4. 使用Actionscript的封面藝術API URLRequest
- 5. 提供DVD封面藝術的服務?
- 6. Spotify API,預加載封面藝術
- 7. Android專輯藝術
- 8. 來自MPEG 4文件的C++ Taglib封面藝術
- 9. Linux:用於寫入ID3v2數據和封面藝術的庫
- 10. 如何爲我的遊戲設置「封面藝術」?
- 11. 從.flac和.asf文件的C + + Taglib封面藝術
- 12. 如何使用TagLib獲取歌曲封面藝術
- 13. 從Java音樂文件中使用JAudioTagger獲取封面藝術
- 14. 從mp3文件獲取嵌入式封面藝術
- 15. FFmpeg,如何將封面藝術(圖片)嵌入到.m4a
- 16. iTunes報亭封面藝術已更改爲默認圖像
- 17. libspotify API:如何使用libspotify API檢索封面藝術?
- 18. 從Spotify下載封面藝術URL並進行鍵值觀察
- 19. 從Google Play音樂獲取封面藝術
- 20. lastfm藝術家信息在Android上
- 21. 在android中以編程方式查找專輯封面和藝術作品
- 22. iOS上的矢量藝術
- 23. Android如何獲得藝術家藝術(圖片)
- 24. 從Android MediaStore中加載藝術家以及藝術品
- 25. 從MediaStore獲取藝術家藝術
- 26. WordPress的藝術家
- 27. 使用taglib在WPF中的圖像框中顯示封面藝術
- 28. 爲什麼不是我的蘋果播客封面藝術更新
- 29. 讀取和寫入音樂文件的嵌入式封面藝術
- 30. 在不更新內容的情況下更新報攤封面藝術
由於您需要幫助的部分應用程序似乎有點混淆,因此您可能需要相應更新您的問題。 – 2010-01-02 22:47:25
你也可以試試這個:http://stackoverflow.com/questions/10209176/extract-album-cover-from-mp3-file-in-android?rq=1 – Chepech 2014-01-22 16:47:00