Android Recording Incoming and Outgoing Calls
I am using mic to record calls for better support and compatibility.
MediaRecorder recorder = new MediaRecorder();
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(your_desired_folder_path);
try {
recorder.prepare();
} catch (java.io.IOException e) {
recorder = null;
return;
}
recorder.start();
First off, you have to be careful with recording calls as there are legal requirements depending on the country.
Here is a blog post on how to record audio using the MediaRecorder.
I haven't tried recording phone call's but there is a option in MediaRecorder AudioSource for:
- VOICE_CALL - Voice call uplink + downlink audio source
- VOICE_DOWNLINK - Voice call downlink (Rx) audio source
- VOICE_UPLINK - Voice call uplink (Tx) audio source
As long as the audio source options work, you should be good to go.
I am using mic to record phone audio and also use the Telephony manager to find the calling state.
private MediaRecorder recorder;
recorder = new MediaRecorder();
try {
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setAudioSamplingRate(44100);
recorder.setOutputFile(your_desired_files_absoulte_path);
} catch (Exception e) {
e.printstacktrace ;
}
after that, you can easily start recording anywhere you want
recorder.prepare();
recorder.start();
and after finishing recording you can easily also stop the recording
recorder.stop();
recorder.reset();
recorder.release();