我試圖檢索有關我的原始文件夾中的音樂文件的信息。我需要檢索持續時間,標題,藝術家等。我知道如何檢索存儲在外部存儲器中的音樂文件的這些信息,但我不知道如何在原始文件夾中查找音樂文件。幫助和鏈接將不勝感激!Android:從原始文件夾檢索音樂文件信息
回答
經過四處搜索並嘗試下面的例子,我沒有成功。 @Jignesh Shaw的解決方案給了我一個IllegalArgumentException,當我將設置MediaMetadataRetriever的來源和@Hanz克拉茨的解決方案是唯一能夠提取歌曲的持續時間(如他所描述的)
兩個,但是,我的靈感之間拿出一個工作解決方案然後
Uri mediaPath = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.song_name);
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(this, mediaPath);
信息進行提取,就像兩個用戶曾表示
String sponsorTitle = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
String sponsorArtist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
//and so on...
我不知道爲什麼這個工程完美,但@Hanz克拉茨的解決方案不。如果其他人偶然發現了這個線索,那麼如果你發佈了你的發現就會很好。謝謝大家!
這可能會幫助: -
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
String[] projection = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DURATION};
cursor = this.managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection,null, null);
private List<String> songs = new ArrayList<String>();
while(cursor.moveToNext()){
songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" +
cursor.getString(2) + "||" + cursor.getString(3) + "||" +
cursor.getString(4) + "||" + cursor.getString(5));
}
剛剛獲得FileDescriptor
的原始資產,然後使用MediaMetadataRetriever
提取元數據,如持續時間等
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
FileDescriptor fd = getResources().openRawResourceFd(R.raw.rocknroll).getFileDescriptor();
mmr.setDataSource(fd);
String duration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
這工作正常持續時間,但不幸的是MediaMetadataRetriever
有問題的藝術家,標題,...與一些MP3文件:Android MediaMetadataRetriever returns null values from most keys
感謝您的幫助。你把我推向了正確的方向(請參閱我的編輯以獲得正確答案) –
太棒了!你應該從你的問題中提取你的答案,然後將它作爲答案並接受它。在SO上回答問題並接受它們是完全正確的。 –
加載你的資源的路徑是這樣的:
String mediaPath = Uri.parse("android.resource://<your-package-name>/raw/filename").getPath();
請確保你沒有附加文件擴展名。例如使用 「文件名」,而不是 「FILENAME.MP3」
然後,您可以訪問ID3標籤(假設你使用MP3文件)是這樣的:
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(mediaPath);
String albumName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);
等..
希望這可以幫助!
感謝您的幫助,您的回答將我推向正確的方向(請參閱編輯以獲取正確答案) –
- 1. 如何將音樂文件從原始文件夾保存到SD卡中android
- 2. 從音樂文件夾瀏覽到資產文件夾android
- 3. Uri with File:/// vs Content:// - 檢索音樂文件信息
- 4. 從文件夾中檢索文件信息的限制
- 5. Android Java專用音樂文件夾
- 6. 將音頻文件從原始文件夾下載到SD卡
- 7. 我如何檢索音樂文件
- 8. 從Android的原始文件夾播放音頻
- 9. AudioTrack Android從原始文件夾播放聲音
- 10. Php - 從XML文件檢索信息
- 11. 將原始音樂文件從主包轉換爲MPMediaItem
- 12. Android MediaStore獲取音樂文件的不同文件夾
- 13. 如何從Edittext將信息保存到原始文件中android
- 14. Android音樂文件位置?
- 15. Android MediaPlayer - 如何從原始文件夾加載多個文件
- 16. Visual Studio 2013無法從服務器檢索文件夾信息
- 17. 從文件夾中檢索圖像:Android
- 18. 如何從applescript中檢索文件夾/文件的服務器詳細信息
- 19. 從虛擬文件夾檢索文件
- 20. 如何粘貼音樂文件的音頻信息?
- 21. 的Android,如何在原始文件夾
- 22. 在android中使用原始文件夾
- 23. 原始文件夾無法解析 - Android
- 24. 的Android穿越原始文件夾
- 25. 訪問iPod音樂文件夾
- 26. 選擇音樂文件夾html
- 27. android listview onclick在原始文件夾中打開文本文件
- 28. 從原始文件夾播放隨機聲音
- 29. 意圖從原始文件夾播放聲音
- 30. 從原始文件夾播放MP3?
感謝您的嘗試,但這不是我要找的。正如問題所述,我已經知道如何從位於外部存儲器的文件中檢索信息。我試圖檢索原始文件夾中的文件信息 –