본문 바로가기
Android/Concepts

MediaRecorder로 Audio 녹음하기

by JuHy_ 2020. 5. 4.

안드로이드에서는 녹음 및 녹화 기능을 위해 MediaRecorder를 제공하고 있다.

MediaRecorder를 사용해 녹음을 할 때는 오디오 재생보다 조금 더 복잡한 과정이 필요하다.

하나씩 구현해보면서 필요한 작업들을 알아보자.

 

사용법

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

먼저 manifest에 녹음을 위한 권한과 녹음한 파일을 저장하고 읽기 위한 권한을 설정해준다.

 

※ 이 권한들은 위험 권한이기 때문에 API 23 버전부터는 권한 허용 코드를 구현해주어야 한다. 아래 글 참고.

https://ju-hy.tistory.com/51

 

Permission 획득하기

일반 권한과 위험 권한 기본적으로 특정 권한을 획득하기 위해서는 Manifest에 요청할 권한을 추가하기만 하면 된다. 예전에는 이런 권한들을 앱 설치 수락 과정에서 모두 획득이 가능했는데, 사��

ju-hy.tistory.com

 

MediaRecorder recorder;
String filename;

Activity에서는 먼저 MediaRecorder 객체와 녹음한 음성 파일을 저장할 경로 변수를 클래스에 만들어준다.

 

File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard, "recorded.mp4");
filename = file.getAbsolutePath();

그리고 onCreate()에서 저장소를 불러와 파일명을 설정해 경로를 생성해주자.

 

public void recordAudio(){
    recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
    recorder.setOutputFile(filename);

    try {
        recorder.prepare();
        recorder.start();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

이제 녹음을 시작하는 함수를 만들어보자.

먼저 MediaRecorder 객체를 생성한 뒤 오디오 녹음을 위한 설정을 해준다.

 

1. 오디오가 입력될 장치를 설정해준다. (MIC)

2. 오디오가 저장될 포맷을 선택해준다. (mpeg4)

3. 오디오 인코더를 설정해준다. (default)

4. 녹음된 오디오 파일이 저장될 위치를 설정해준다. (filename)

 

설정이 끝났다면 prepare() 함수를 통해 파일을 불러와 start() 함수로 녹음을 시작하면 된다.

 

public void stopRecording(){
    if(recorder != null){
        recorder.stop();
        recorder.release();
        recorder = null;
    }
}

녹음 정지는 stop() 함수를 실행하면 되며, release() 함수를 통해 자원을 반환한 뒤 null로 설정해주자.

 

 

녹음 후에 녹음한 파일을 재생해보려면 아래 MediaPlayer 글을 참고하여 재생해보도록 하자.

https://ju-hy.tistory.com/74

 

MediaPlayer로 Audio와 Video 파일 재생하기

안드로이드에서는 음악이나 동영상 같은 미디어 파일을 재생할 수 있도록 MediaPlayer를 제공하고 있다. MediaPlayer를 이용하여 Audio 파일과 Video 파일을 재생하는 법을 알아보자. Audio 재생하기 MediaPlayer..

ju-hy.tistory.com

 

※ 에뮬레이터에서 녹음 기능을 사용하려면 마이크 연결 후 에뮬레이터 설정에서 마이크 설정을 켜주어야 한다.

 

 

Reference

[부스트코스]안드로이드 프로그래밍

https://www.edwith.org/boostcourse-android