반응형
EXTERNAL 저장소의 미디어 파일 가져오기
EXTERNAL 저장소에 있는 미디어 파일을 불러오는 방법은 크게 두 가지가 존재한다. 하나는 파일 앱에서 불러오는 것과 PICK 액션이 등록되어 있는 앱에서 불러오는 방법이 있다.
파일 앱에서 가져오기
먼저 파일 앱에서 불러오기 위해선 ACTION_GET_CONTENT 액션으로 요청해야 하며 가져올 타입이 필요하다.
Intent getAudioIntent = new Intent(ACTION_GET_CONTENT);
getAudioIntent.setType("audio/*"); // 타입에 따라 video/* , image/* 를 넣어주면 된다.
startActivityForResult(getAudioIntent, AUDIO_REQUEST);
startActivityForResult를 통해 startActivity된 앱에서 결과 값을 받아오도록 한다.
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == AUDIO_REQUEST){
if(resultCode == RESULT_OK && data != null) {
Uri audioUri = data.getData();
// TODO 여기서 파일 처리 해주면 된다.
}
}
}
받아온 결과 값이 request가 맞는지 확인 후 결과가 OK면서 Intent가 null이 아닌 경우에 오디오 Uri를 가져와 처리하면 된다.
PICK 액션이 등록된 앱에서 가져오기
PICK 액션이 등록된 앱에서 가져오려면 먼저 ACTION_PICK으로 요청해야 하며 data와 type을 intent에 넣어줘야 한다. 오디오의 경우 아래처럼 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI로 선언해주면 되는데, 만약 다른 타입의 미디어를 불러올 경우 Audio 만 Video, Image 등으로 바꿔주면 된다.
Intent getAudioIntent = new Intent(ACTION_PICK);
getAudioIntent.setDataAndType(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, "audio/*");
startActivityForResult(getAudioIntent, AUDIO_REQUEST);
나머지는 위에서 한 것처럼 uri를 불러와서 처리 해주면 된다.
'개발 > Android' 카테고리의 다른 글
[Android] Worker를 이용해 파일 저장하기 (0) | 2023.10.31 |
---|---|
[Android] 바이트 관련 데이터를 형식에 맞춰 보여주기(파일 크기, 비트 전송률, 샘플링 주파수) (0) | 2023.10.26 |
[Android][Shortcut] 바로 가기 위젯 만드는 법 (0) | 2023.10.23 |
[Android] [MediaMetadataRetriever]영상 데이터가 존재하는지 확인하는 법 (0) | 2023.10.20 |
[Android] 가로 모드에서 확장형 키보드 막기 (0) | 2023.10.11 |