안녕하세요. 안드로이드 초보 개발자입니다.
통화중에 녹음하는 기능을 개발해보고 있습니다.
MediaRecorder라는걸 사용하라고 하더군요.
그래서 다음과 같이 해주고 있습니다.
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setOutputFile(filePath);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
try {
recorder.prepare();
recorder.start();
} catch (Exception e) {
}
LG G4와 갤럭시 S6로 테스트를 해보았습니다.
LG G4는 이상없이 잘 녹음이 됩니다.
근데 갤럭시 S6는 안되더라구요... 그래서 로그를 봤더니 다음과 같이 출력이 됩니다.
06-07 17:30:26.581: I/MediaPlayerService(3094): Create new media recorder client from pid 11435
06-07 17:30:29.611: I/APM::AudioPolicyManager(3094): getInputForAttr() source 4, samplingRate 8000, format 1, channelMask 10,session 312, flags 0
06-07 17:30:29.611: V/audio_hw_primary(3094): adev_open_input_stream: request sample_rate:8000
06-07 17:30:29.611: V/audio_hw_primary(3094): in->requested_rate:8000, pcm_config_in.rate:48000 in->config.channels=2
06-07 17:30:29.611: D/audio_hw_primary(3094): adev_open_input_stream: call echoReference_init(12)
06-07 17:30:29.611: V/echo_reference_processing(3094): echoReference_init +
06-07 17:30:29.621: I/audio_hw_primary(3094): adev_open_input_stream: input is null, set new input stream
06-07 17:30:29.621: I/AudioFlinger(3094): AudioFlinger's thread 0xecf00000 ready to run
06-07 17:30:29.651: E/(3094): Request requires android.permission.CAPTURE_AUDIO_OUTPUT
06-07 17:30:29.651: E/AudioPolicyIntefaceImpl(3094): getInputForAttr() permission denied: capture not allowed
06-07 17:30:29.661: V/audio_hw_primary(3094): stop_voice_note_recording
06-07 17:30:29.661: E/audio_hw_primary(3094): adev_close_input_stream, set jack_in to null
06-07 17:30:29.661: E/AudioRecord(3094): Could not get audio input for record source 4, sample rate 8000, format 1, channel mask 0x10, session 312, flags 0
06-07 17:30:29.671: E/StagefrightRecorder(3094): audio source is not initialized
06-07 17:30:29.671: E/MediaRecorder(11435): start failed: -2147483648
(source 4는 VOICE_CALL을 의미합니다)
당연히 manifest에 CAPTURE_AUDIO_OUTPUT을 넣어보았습니다만... 넣어도 똑같이 뜨구 있습니다.
이런경우 단말 자체에서 일반적인앱의 통화녹음 기능을 막아놓았다고 봐도 될까요??
audioSource를 MIC로 하면 녹음이 잘 됩니다. 물론 통화중에도 되긴하나 MIC에 대한거기때문에 내 목소리만 녹음이 되죠.
조언 부탁드립니다!