댓글에서 설명한 것처럼 Android Music 애플리케이션이 모든 음악 파일을 찾는 방법을 보여 드리겠습니다.
Android Music 애플리케이션은 MediaProvider에 외부 저장 공간 (예 : sdcard)에 대한 모든 음악을 가져 오기만하면됩니다.
그리고 데이터베이스는 MediaScannerService으로 채워집니다. MediaScannerService는 MediaScanner.scanDirectories을 호출하여 해당 디렉토리 아래의 모든 파일을 검색합니다. 오디오 파일 인 경우 메타 데이터를 가져 와서 데이터베이스에 저장합니다 (MediaProvider).
if (MediaProvider.INTERNAL_VOLUME.equals(volume)) {
// scan internal media storage
directories = new String[] {
Environment.getRootDirectory() + "/media",
};
}else if (MediaProvider.EXTERNAL_VOLUME.equals(volume)) {
// scan external storage volumes
directories = mExternalStoragePaths;
}
if (directories != null) {
scan(directories, volume);
}
그래서 내 대답은 MediaProvider 이미 외부 저장 장치에있는 음악 파일이 포함되어 있습니다, 그래서 당신은 직접 모든 음악 파일을 얻을 수있는 업체를 조회 할 수 있습니다.
먼저 MediaStore을 확인하십시오.
다음 코드를 사용하여 모든 음악 파일을 가져올 수 있습니다.
//Some audio may be explicitly marked as not being music
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));
}
MediaStore.Audio.Media.DATA
열은 음악 파일의 전체 경로를 포함합니다.
사용자가 음악 파일의 위치를 알려주는 것이 좋습니다. – StarPinkER
대부분의 사용자는 기기가 음악 파일을 저장하는 위치를 신경 쓰지 않을 것이라고 생각합니다. – Allen
하지만 분명히 음악은 중국에서 인기있는 앱인 qqmusic에서 다운로드합니다. 그리고 그 디렉토리는 해당 애플리케이션에 의해 생성됩니다. – StarPinkER