如何捕捉 sd 卡中的所有歌曲以及 sd 卡文件夹,如音乐等
how to catch all songs in sdcard and also sdcard folders like music and etc
我使用此代码查找 mp3 文件:
`
// String extStore = System.getenv("EXTERNAL_STORAGE");
// File home = new File(extStore);
//String extStore = "/storage/extSdCarcd";
String extStore = "/storage/";
File home = new File(extStore);
if(home.listFiles(new FileExtensionFilter()).length>0){
for(File file : home.listFiles(new FileExtensionFilter())){
HashMap<String,String> song = new HashMap<String, String>();
song.put("title",file.getName().substring(0,(file.getName().length()-4)));
song.put("path",file.getPath());
songsList.add(song);
}
}
return songsList;
}`
如您所见,我尝试了很多方法来获取 .mp3 文件,但如果我的蓝牙文件夹或音乐文件夹中有 mp3 文件,它们将无济于事。它们仅用于 sdcard
中的音乐
要获取所有 mp3 歌曲,您必须使用媒体存储数据库,它将列出设备的所有歌曲
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
public ArrayList<HashMap<String, String>> getPlayList(Context c) {
final Cursor mCursor = c.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaColumns.TITLE, MediaColumns.DATA, AudioColumns.ALBUM }, null, null,
"LOWER(" + MediaColumns.TITLE + ") ASC");
String songTitle = "";
String songPath = "";
/* run through all the columns we got back and save the data we need into the arraylist for our listview*/
if (mCursor.moveToFirst()) {
do {
songTitle = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaColumns.TITLE));
songPath = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaColumns.DATA));
HashMap<String, String> song = new HashMap<String, String>();
song.put("songTitle", songTitle);
song.put("songPath", songPath);
songsList.add(song);
} while (mCursor.moveToNext());
}
mCursor.close(); //cursor has been consumed so close it
return songsList;
}
我使用此代码查找 mp3 文件:
`
// String extStore = System.getenv("EXTERNAL_STORAGE");
// File home = new File(extStore);
//String extStore = "/storage/extSdCarcd";
String extStore = "/storage/";
File home = new File(extStore);
if(home.listFiles(new FileExtensionFilter()).length>0){
for(File file : home.listFiles(new FileExtensionFilter())){
HashMap<String,String> song = new HashMap<String, String>();
song.put("title",file.getName().substring(0,(file.getName().length()-4)));
song.put("path",file.getPath());
songsList.add(song);
}
}
return songsList;
}`
如您所见,我尝试了很多方法来获取 .mp3 文件,但如果我的蓝牙文件夹或音乐文件夹中有 mp3 文件,它们将无济于事。它们仅用于 sdcard
中的音乐要获取所有 mp3 歌曲,您必须使用媒体存储数据库,它将列出设备的所有歌曲
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
public ArrayList<HashMap<String, String>> getPlayList(Context c) {
final Cursor mCursor = c.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] { MediaColumns.TITLE, MediaColumns.DATA, AudioColumns.ALBUM }, null, null,
"LOWER(" + MediaColumns.TITLE + ") ASC");
String songTitle = "";
String songPath = "";
/* run through all the columns we got back and save the data we need into the arraylist for our listview*/
if (mCursor.moveToFirst()) {
do {
songTitle = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaColumns.TITLE));
songPath = mCursor.getString(mCursor.getColumnIndexOrThrow(MediaColumns.DATA));
HashMap<String, String> song = new HashMap<String, String>();
song.put("songTitle", songTitle);
song.put("songPath", songPath);
songsList.add(song);
} while (mCursor.moveToNext());
}
mCursor.close(); //cursor has been consumed so close it
return songsList;
}