2017-11-13 23 views
0

휴대 전화로 음악 파일을 검색하는 앱을 만들었습니다. /sdcard/Music 폴더를 스캔하면 음악 파일을 검색하지만 /sdcard을 쓸 때 mp3 파일을 검색하지 않습니다. 잘 작동합니다. 하지만 일부 장치에서는 작동하지 않습니다. 응용 프로그램이 그 전화에없는 경로로 인해 작동하지 않아도됩니다.안드로이드 폰에서 모든 음악 파일 목록을 얻는 방법

CODE

public class SongsManager { 

// SDCard Path 
    String MEDIA_PATH = new String("/sdcard/Music"); 
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 FileExtensionFilter implements FilenameFilter { 
    public boolean accept(File dir, String name) { 
     return (name.endsWith(".mp3") || name.endsWith(".MP3")); 
    } 
} 

}

답변

0

// 현재 URI를 통해 미디어 저장소 DB에 나와있는 음악 파일의 목록을 검색합니다.

일부 오디오가 명시 적으로이 곳이 코드를 삽입 말할 수있는 음악

String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 

String[] projection = { 
    MediaStore.Audio.Media._ID, 
    MediaStore.Audio.Media.ARTIST, 
    MediaStore.Audio.Media.TITLE, 
    MediaStore.Audio.Media.DATA, 
    MediaStore.Audio.Media.DISPLAY_NAME, 
    MediaStore.Audio.Media.DURATION 
}; 

cursor = this.managedQuery(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
    projection, 
    selection, 
    null, 
    null); 

private List<String> songs = new ArrayList<String>(); 
while(cursor.moveToNext()){ 
    songs.add(cursor.getString(0) + "||" + cursor.getString(1) + "||" + cursor.getString(2) + "||" + cursor.getString(3) + "||" + cursor.getString(4) + "||" + cursor.getString(5)); 
} 
+0

없는 것으로 표시 할 수있다 //? –

+0

SongsManager 클래스를 추가하고 노래를 반환 할 수 있습니다. – Dilip

+0

도움을 주셔서 감사합니다. –