Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Voice Call recording in android using MediaRecorder

I have a problem in recording a call I have made a service and called a BroadcastReceiver to get the call state. In TelephonyManager.EXTRA_STATE_OFFHOOK when the call is received. I am using following code to record the call

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);                               recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
recorder.setOutputFile(audiofile.getAbsolutePath());
try {
     recorder.prepare();
     recorder.start();
} 
catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) { 
e.printStackTrace();
} catch (Exception ex)
{
ex.printStackTrace();
}

This code is working fine and creates the audio file but when I listen the audio file I can only listen my outgoing voice, caller voice is not recorded.

When I use

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);

instead of

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);

in above code it throws exception of recoder fails on recoder.start();

So, how can I record voice call?

like image 821
user2064024 Avatar asked Dec 14 '25 13:12

user2064024


1 Answers

I also had the same doubt a year ago AudioSource.VOICE_CALL not working in android 4.0 but working in android 2.3

recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); works on limited devices ,it will give exception only on that device in which voice call is not supported so catch the exception and start the recording from mic all over again that will keep you on safer side in non supported device.

like image 82
Auto-Droid ツ Avatar answered Dec 19 '25 05:12

Auto-Droid ツ



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!