私はアンドロイドで音楽プレーヤーアプリケーションを開発しました。私は歌のマネージャーと呼ばれるクラスを持っています。ここではすべての.mp3ファイルをフェッチしていますが、次のコードはSDカードと電話機のメモリからすべての.mp3ファイルをフェッチしていません。手伝ってくれませんか 。SDカードと電話機のメモリから.mp3形式のすべての曲を取り出す方法
Javaファイル
public class SongsManager {
// SDCard Path
final String MEDIA_PATH = Environment.getExternalStorageDirectory().getPath() + "/";
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
private String mp3Pattern = ".mp3";
// Constructor
public SongsManager() {
}
public ArrayList<HashMap<String, String>> getPlayList() {
System.out.println(MEDIA_PATH);
if (MEDIA_PATH != null) {
File home = new File(MEDIA_PATH);
File[] listFiles = home.listFiles();
if (listFiles != null && listFiles.length > 0) {
for (File file : listFiles) {
System.out.println(file.getAbsolutePath());
if (file.isDirectory()) {
scanDirectory(file);
} else {
addSongToList(file);
}
}
}
}
// return songs list array
return songsList;
}
private void scanDirectory(File directory) {
if (directory != null) {
File[] listFiles = directory.listFiles();
if (listFiles != null && listFiles.length > 0) {
for (File file : listFiles) {
if (file.isDirectory()) {
scanDirectory(file);
} else {
addSongToList(file);
}
}
}
}
}
private void addSongToList(File song) {
if (song.getName().endsWith(mp3Pattern)) {
HashMap<String, String> songMap = new HashMap<String, String>();
songMap.put("songTitle",
song.getName().substring(0, (song.getName().length() - 4)));
songMap.put("songPath", song.getPath());
// Adding each song to SongList
songsList.add(songMap);
}
}
}
私はまた、マニフェストファイルに次のように与えてきました。 Pleaeこれはこれは働いていたSDカードに
public static void findFilesRecursively(String directoryName, List<File> files, Pattern pattern) {
File directory = new File(directoryName);
// get all the files from a directory
File[] fList = directory.listFiles();
for (File file : fList) {
if (file.isFile()) {
if(pattern.matcher(file.getName()).find()) {
files.add(file);
}
} else if (file.isDirectory()) {
findFilesRecursively(file.getAbsolutePath(), files, pattern);
}
}
File dir = Environment.getExternalStorageDirectory();
List<File> fileResult = new ArrayList<File>();
findFilesRecursively(dir.getAbsolutePath(), fileResult,Pattern.compile(".*\\.mp3$"));