더 빠른 방법으로 SD 카드에 시스템 벨소리 및 Mp3 파일 가져 오기-Android

Bhargav Ponnapalli

SoundManager 클래스를 사용하여 SD 카드에서 시스템 벨소리 (TYPE_ALL)와 mp3 파일을 모두 가져옵니다. 결국에는 HashMaps (활동 스 니펫에 있음)를 사용하여 Listview (CheckedTextViews 포함)를 채우고 사용자가 톤 (벨소리 또는 노래)을 선택할 수 있도록합니다. 코드가 작동하고 미디어 플레이어를 사용하여 선택한 톤을 재생할 수 있습니다.

그러나 시간이 많이 걸립니다 . 나는 그것이 SongsManager 파일 때문인지 다른 이유인지 모르겠습니다. 이 프로세스의 속도를 높일 수있는 대안이 있습니까?

SoundManager.java

public class SongsManager {

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() {

}

/**
 * Function to read all mp3 files and store the details in
 * ArrayList
 * */
public ArrayList<HashMap<String, Ringtone>> getAllSounds(Context context){
    RingtoneManager ringtoneMgr = new RingtoneManager(context);
    ringtoneMgr.setType(RingtoneManager.TYPE_ALL);
    Cursor alarmsCursor = ringtoneMgr.getCursor();
    int alarmsCount = alarmsCursor.getCount();
    if (alarmsCount == 0 && !alarmsCursor.moveToFirst()) {
        return null;
    }
    ArrayList<HashMap<String, Ringtone>> alarms = new ArrayList<HashMap<String, Ringtone>>();
    while(!alarmsCursor.isAfterLast() && alarmsCursor.moveToNext()) {
        int currentPosition = alarmsCursor.getPosition();
        HashMap<String, Ringtone> soundMap = new HashMap<String, Ringtone>();
        Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition);
        soundMap.put("Sound",ringtone);

        alarms.add(soundMap);
    }
    alarmsCursor.close();
    return alarms;
}


 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);
    }
}

}

MyActivity.java의 스 니펫

        SongsManager songsManager = new SongsManager();
        ArrayList<HashMap<String, String>> songsMap = songsManager.getPlayList();
        ArrayList<HashMap<String, Ringtone>> soundMap = songsManager.getAllSounds(getApplicationContext());
Ganesh AB-Android

Android Manifest 파일에서 외부 저장소 권한 으로이 기능을 사용하십시오 .

public ArrayList<HashMap<String, String>> getSDCardAudioFiles() {

ArrayList<HashMap<String, String>> audioFilesList = new ArrayList<HashMap<String, String>>();
    Cursor mCursor = getContentResolver().query(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            new String[] { MediaStore.Audio.Media.DISPLAY_NAME,
                    MediaStore.Audio.Media.DATA }, null, null, null);

    int count = mCursor.getCount();

    HashMap<String, String> audioFileMap;
    while (mCursor.moveToNext()) {
        audioFileMap = new HashMap<String, String>();
        audioFileMap.put("FileName",mCursor.getString(mCursor
                        .getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME)));
        audioFileMap.put("FilePath", mCursor.getString(mCursor
                .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA)));
        audioFilesList.add(audioFileMap);
    }
    mCursor.close();
    return audioFilesList;
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android의 내부 및 외부 저장소에서 모든 .mp3 파일을 가져 오는 방법

분류에서Dev

SD 카드의 폴더 및 파일 목록 가져 오기

분류에서Dev

Sd 카드 {Android 앱}에 Mp3로 파일 저장

분류에서Dev

Android 앱에서 노래 (MP3 파일)를 더 빠르게 스트리밍하는 방법

분류에서Dev

URI에서 .mp3 원시 리소스의 경로 가져 오기

분류에서Dev

SD 카드에서 특정 파일의 경로 가져 오기

분류에서Dev

원시 폴더의 모든 mp3 파일을 이름 및 기타 메타 데이터별로 목록에 넣는 방법은 무엇입니까?

분류에서Dev

서버의 전체 파일 시스템보기 및 폴더 경로 가져 오기

분류에서Dev

동일한 파일 시스템간에 cp가 다른 파일 시스템보다 더 빠릅니까?

분류에서Dev

동일한 파일 시스템에서 다른 파일 시스템보다 cp가 더 빠릅니까?

분류에서Dev

리소스 폴더에서 파일을 파일로 가져 오는 방법은 무엇입니까?

분류에서Dev

에뮬레이터로 벨소리 가져 오기 (Android Studio)

분류에서Dev

Android SDK에서 .ics 파일 가져 오기 및 캘린더에 추가

분류에서Dev

공용 Dropbox 폴더에있는 파일 및 폴더 목록 가져 오기 및 파일 다운로드

분류에서Dev

NaN으로 팬더 시리즈 모드를 얻는 가장 빠른 방법

분류에서Dev

Android 소스 패키지의 하위 폴더 이름 및 파일 이름 목록 가져 오기

분류에서Dev

Android 소스 패키지의 하위 폴더 이름 및 파일 이름 목록 가져 오기

분류에서Dev

Android 소스 패키지의 하위 폴더 이름 및 파일 이름 목록 가져 오기

분류에서Dev

`df -h`로 파일 시스템 이름 및 사용법 가져 오기

분류에서Dev

리소스에서 mp3 오디오 파일을 재생하는 방법 (SoundPlayer가 아닌 미디어 플레이어 사용)

분류에서Dev

SD 카드를 파티션하면 "읽기 전용 파일 시스템"오류가 발생합니다.

분류에서Dev

Android에서 파일 및 디렉토리 목록 가져 오기

분류에서Dev

키에서 다른 로케일의 모든 리소스 파일에서 메시지 가져 오기

분류에서Dev

내가 만든 저장소에서 다른 사람이 업로드 한 파일 또는 폴더 가져 오기

분류에서Dev

폴더에 mp3 파일을 업로드 하시겠습니까?

분류에서Dev

OpenGPG 스마트 카드에서 비밀 키를 가져 오는 방법 (한 시스템 / OS에서 다른 시스템으로 복사 됨)?

분류에서Dev

Excel 2013에서 파일을 열거 나 가져 오는 더 빠른 방법이 있습니까?

분류에서Dev

시스템 로그 파일을 로컬 소켓으로 가져 오기

분류에서Dev

실수로 제거 된 SD 카드-카드 리더기가 더 이상 표시되지 않음

Related 관련 기사

  1. 1

    Android의 내부 및 외부 저장소에서 모든 .mp3 파일을 가져 오는 방법

  2. 2

    SD 카드의 폴더 및 파일 목록 가져 오기

  3. 3

    Sd 카드 {Android 앱}에 Mp3로 파일 저장

  4. 4

    Android 앱에서 노래 (MP3 파일)를 더 빠르게 스트리밍하는 방법

  5. 5

    URI에서 .mp3 원시 리소스의 경로 가져 오기

  6. 6

    SD 카드에서 특정 파일의 경로 가져 오기

  7. 7

    원시 폴더의 모든 mp3 파일을 이름 및 기타 메타 데이터별로 목록에 넣는 방법은 무엇입니까?

  8. 8

    서버의 전체 파일 시스템보기 및 폴더 경로 가져 오기

  9. 9

    동일한 파일 시스템간에 cp가 다른 파일 시스템보다 더 빠릅니까?

  10. 10

    동일한 파일 시스템에서 다른 파일 시스템보다 cp가 더 빠릅니까?

  11. 11

    리소스 폴더에서 파일을 파일로 가져 오는 방법은 무엇입니까?

  12. 12

    에뮬레이터로 벨소리 가져 오기 (Android Studio)

  13. 13

    Android SDK에서 .ics 파일 가져 오기 및 캘린더에 추가

  14. 14

    공용 Dropbox 폴더에있는 파일 및 폴더 목록 가져 오기 및 파일 다운로드

  15. 15

    NaN으로 팬더 시리즈 모드를 얻는 가장 빠른 방법

  16. 16

    Android 소스 패키지의 하위 폴더 이름 및 파일 이름 목록 가져 오기

  17. 17

    Android 소스 패키지의 하위 폴더 이름 및 파일 이름 목록 가져 오기

  18. 18

    Android 소스 패키지의 하위 폴더 이름 및 파일 이름 목록 가져 오기

  19. 19

    `df -h`로 파일 시스템 이름 및 사용법 가져 오기

  20. 20

    리소스에서 mp3 오디오 파일을 재생하는 방법 (SoundPlayer가 아닌 미디어 플레이어 사용)

  21. 21

    SD 카드를 파티션하면 "읽기 전용 파일 시스템"오류가 발생합니다.

  22. 22

    Android에서 파일 및 디렉토리 목록 가져 오기

  23. 23

    키에서 다른 로케일의 모든 리소스 파일에서 메시지 가져 오기

  24. 24

    내가 만든 저장소에서 다른 사람이 업로드 한 파일 또는 폴더 가져 오기

  25. 25

    폴더에 mp3 파일을 업로드 하시겠습니까?

  26. 26

    OpenGPG 스마트 카드에서 비밀 키를 가져 오는 방법 (한 시스템 / OS에서 다른 시스템으로 복사 됨)?

  27. 27

    Excel 2013에서 파일을 열거 나 가져 오는 더 빠른 방법이 있습니까?

  28. 28

    시스템 로그 파일을 로컬 소켓으로 가져 오기

  29. 29

    실수로 제거 된 SD 카드-카드 리더기가 더 이상 표시되지 않음

뜨겁다태그

보관