我正在Android中创建一个音乐播放器应用程序。在MainActivity中,我在一个简单的列表视图中列出了所有(.mp3,.wav,.flac)文件。我正在使用此getSongs
方法搜索此类文件:
public void getSongs(File root) {
File listFile[] = root.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory() && !listFile[i].isHidden()) {
getSongs(listFile[i]);
} else {
if (listFile[i].getName().endsWith(".mp3") ||
listFile[i].getName().endsWith(".MP3") ||
listFile[i].getName().endsWith(".flac")||
listFile[i].getName().endsWith(".wav")) {
songList.add(listFile[i]);
}
}
}
}
}
然后从主要活动我称之为:
File externalSD = new File("/storage/"); //gets the external but not internal!!
getSongs(externalSD);
File internalSD = new File(Environment.getExternalStorageDirectory().getAbsolutePath()); //gets the internal but not external!!
getSongs(internalSD);
适合我(我只有100首歌曲)但如果你有大量这样的文件,它真的很慢(我的朋友有大约2.5k的歌曲......)。 我想知道如何才能更有效地实现这一目标。
答案 0 :(得分:0)
你可以尝试:
第二种选择会更快,因为你不必遍历整个系统。