![](/img/trans.png)
[英]How to get audio file info (album, artist, image, …) Android?
[英]How to fetch album and artist info. I wanna know what does this code do?
有人可以逐行向我解釋一下嗎?我不想只復制粘貼內容而沒有對我實際上在做什么的知識
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);
我正在嘗試使用下面的代碼中的上面的代碼來獲取音樂藝術家和專輯等。
................................................................. ..................................................
public ArrayList<SongDetails> getSongsFromDirectory(File f)
{MediaMetadataRetriever mmr = new MediaMetadataRetriever();
ArrayList<SongDetails> songs = new ArrayList<SongDetails>();
if (!f.exists() || !f.isDirectory())
{
return songs;
}
File[] files = f.listFiles(new Mp3Filter());
for(int i=0; i<files.length; i++)
{
Uri uri = Uri.fromFile(files[i]);
//mmr.setDataSource(null, uri);
if (files[i].isFile()){
SongDetails detail=new SongDetails();
detail.setIcon(R.drawable.ic_launcher);
detail.setSong(files[i].getName());
//detail.setArtist(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
//detail.setAlbum(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));
songs.add(detail);
}else if (files[i].isDirectory()){
songs.addAll(getSongsFromDirectory(files[i]));
}
}
return songs;
} }
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
該行將“創建一個解析給定編碼的URI字符串的Uri”。 (來自http://developer.android.com/reference/android/net/Uri.html)URI是統一資源標識符,它是Web資源的唯一標識符。
Uri uri = ContentUris.withAppendedId(sArtworkUri, album_id);
ContentUris是一種“實用程序方法,可用於處理使用“內容”(content://)方案的Uri對象。 ( http://developer.android.com/reference/android/content/ContentUris.html ),帶有附加程序ID,會將album_id附加到傳入URI的末尾。 本質上,您正在創建一個新的URI,以直接指向相冊。
ContentResolver res = context.getContentResolver();
提供對內容模型的訪問( http://developer.android.com/reference/android/content/ContentResolver.html )
InputStream in = res.openInputStream(uri);
這使您可以通過InputStream訪問URI上的內容。 InputStreams允許您讀取數據。 http://developer.android.com/reference/java/io/InputStream.html
Bitmap artwork = BitmapFactory.decodeStream(in);
最后,此方法將從輸入流的URI加載圖像。 因此,您現在可以在內存中使用圖像了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.