我試圖列出我的應用程序的內部存儲和外部存儲器中的所有歌曲作爲列表視圖。我使用下面的代碼獲取歌曲如何使用MediaStore在android中獲取存儲在內部存儲和外部存儲中的所有音樂文件?
ContentResolver musicResolver = getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
if(musicCursor!=null && musicCursor.moveToFirst()){
//get columns
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
int durationColumn=musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.DURATION);
do {
try {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
String duration = musicCursor.getString(durationColumn);
if (!thisArtist.equalsIgnoreCase("<unknown>")) {
//save track
}
} catch (Exception e) {
}
}
while (musicCursor.moveToNext());
上面的代碼被成功讀取外部存儲中的所有歌曲,但沒有取存放在內存中的歌曲。在沒有外部存儲的三星Galaxy S8等設備中,這是一個問題。 我也曾嘗試光標與下面的URI
musicUri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
這取我的設備鈴聲和短信鈴聲這不是我所需要的。
我已經經歷了類似的問題在StackOverflow和答案沒有解決這個問題給我。
請幫忙。 謝謝。
我做同樣的上述步驟,但它不是我取的所有曲目。:( – hybrid
你看到使用普通的Android音樂播放器所有的曲目? – Theo
你可以試試我的自由的新播放列表管理器它會告訴你在媒體數據庫中找到了多少軌道順便說一句,我假設你的軌道是全部是mp3或者flac,Android忽略.wma擴展 – Theo