這裏是您的解決方案使用下面的代碼來讀取特定的文件夾MP3
文件..
首先創建1個模型類如下給出,以GET
和SET
列表中的文件。
AudioModel.class
public class AudioModel {
String aPath;
String aName;
String aAlbum;
String aArtist;
public String getaPath() {
return aPath;
}
public void setaPath(String aPath) {
this.aPath = aPath;
}
public String getaName() {
return aName;
}
public void setaName(String aName) {
this.aName = aName;
}
public String getaAlbum() {
return aAlbum;
}
public void setaAlbum(String aAlbum) {
this.aAlbum = aAlbum;
}
public String getaArtist() {
return aArtist;
}
public void setaArtist(String aArtist) {
this.aArtist = aArtist;
}
}
現在,我們有我們的模型類現在使用下面的代碼從您的文件夾中讀取的所有MP3文件。
這將返回所有MP3文件的列表與音樂NAME, PATH, ARTIST, ALBUM
,如果你想要更詳細請參考Media.Store.Audio
DOC .. https://developer.android.com/reference/android/provider/MediaStore.Audio.html
public List<AudioModel> getAllAudioFromDevice(final Context context) {
final List<AudioModel> tempAudioList = new ArrayList<>();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] projection = {MediaStore.Audio.AudioColumns.DATA, MediaStore.Audio.AudioColumns.ALBUM, MediaStore.Audio.ArtistColumns.ARTIST,};
Cursor c = context.getContentResolver().query(uri, projection, MediaStore.Audio.Media.DATA + " like ? ", new String[]{"%yourFolderName%"}, null);
if (c != null) {
while (c.moveToNext()) {
AudioModel audioModel = new AudioModel();
String path = c.getString(0);
String album = c.getString(1);
String artist = c.getString(2);
String name = path.substring(path.lastIndexOf("/") + 1);
audioModel.setaName(name);
audioModel.setaAlbum(album);
audioModel.setaArtist(artist);
audioModel.setaPath(path);
Log.e("Name :" + name, " Album :" + album);
Log.e("Path :" + path, " Artist :" + artist);
tempAudioList.add(audioModel);
}
c.close();
}
return tempAudioList;
}
來讀取特定文件夾中的文件,使用下面的查詢和寫在查詢您的文件夾名..
Cursor c = context.getContentResolver().query(uri,
projection,
MediaStore.Audio.Media.DATA + " like ? ",
new String[]{"%yourFolderName%"}, // yourFolderName
null);
如果您想查詢以下設備中使用的所有文件..
Cursor c = context.getContentResolver().query(uri,
projection,
null,
null,
null);
不要忘記添加存儲權限..享受。
你應該至少發佈完整的堆棧跟蹤 - 這將有助於知道NPE來自哪一行,以便我們能夠弄清楚確切地說null應該不是null。因此,如果錯誤在第73行,您應該指出哪一行是第73行。 – dcsohl
最可能的原因是您在SD_PATH上沒有.mp3文件,或者您的Mp3Filter不起作用 – NitroNbg
@NitroNbg我的文件SD_PAth和Mp3Filter應該可以工作。我認爲出現錯誤是因爲SD_Path是錯誤的路徑 –