2013-06-20 2 views
1

MP3 플레이어 앱을 만들려고하는데, 휴대폰에서 실행하면 SD 카드에있는 MP3 만 읽습니다. 카드에있는 하위 폴더에서 MP3를 읽지 않습니다. 하위 폴더를 포함하여 SD 카드에있는 모든 MP3를 표시하고 싶습니다.sdcard의 모든 하위 폴더에서 모든 mp3 파일에 액세스하는 방법은 무엇입니까?

public class SongsManager { 
// SDCard Path 
final String MEDIA_PATH = new String(Environment.getExternalStorageDirectory().getPath()); 
private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>(); 

// Constructor 
public SongsManager(){ 

} 

/** 
* Function to read all mp3 files from sdcard 
* and store the details in ArrayList 
* */ 
public ArrayList<HashMap<String, String>> getPlayList(){ 
    File home = new File(MEDIA_PATH); 

    if (home.listFiles(new FileExtensionFilter()).length > 0) { 
     for (File file : home.listFiles(new FileExtensionFilter())) { 
      HashMap<String, String> song = new HashMap<String, String>(); 
      song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4))); 
      song.put("songPath", file.getPath()); 

      // Adding each song to SongList 
      songsList.add(song); 
     } 
    } 
    // return songs list array 
    return songsList; 
} 


/** 
* Class to filter files which are having .mp3 extension 
* */ 
class FileExtensionFilter implements FilenameFilter { 
    public boolean accept(File dir, String name) { 
     return (name.endsWith(".mp3") || name.endsWith(".MP3")); 
    } 
} } 
+0

아래에서 시도해 보셨습니까? – Raghunandan

+0

나는 그 방법을 시도했다. 여전히 전체 sdcard를 검사하지는 않습니다. – max59

+0

하단의 답에 링크가 표시됩니다. 경로를 추가하는 대신 모든 .pg 파일을 삭제합니다. – Raghunandan

답변

1
File home = new File(MEDIA_PATH); 

이어서

walkdir(home); 

WalkDir 방법

public void walkdir(File dir) { 
String Pattern = ".mp3"; 
File listFile[] = dir.listFiles(); 
if (listFile != null) { 
for (int i = 0; i < listFile.length; i++) { 
if (listFile[i].isDirectory()) { 
walkdir(listFile[i]); 
} else { 
if (listFile[i].getName().endsWith(Pattern)){ 
    //Do what ever u want 
    // add the path to hash map  
} 
} 
} 
} 
} 

Delete only .jpg files from folder in android

01,235 @ blackbelt 의해 제안 향상된 루프 더 나은 사용

삭제하는 대신 hahsmap의 경로를 추가하십시오.