Run a background thread and record audio using MediaRecorder below code helps to record voice call in background and it writes file into sdcard
private void startRecording() {
filePath = getFilename();
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
recorder.setOutputFile(filePath);
recorder.setOnErrorListener(errorListener);
recorder.setOnInfoListener(infoListener);
recorder.getMaxAmplitude();
try {
if (recorder != null) {
recorder.prepare();
recorder.start();
}
} catch (IllegalStateException e) {
Log.d(LOG_TAG, e.toString());
} catch (IOException e) {
} catch (Exception e) {
Log.d(LOG_TAG, e.toString());
}
}
private String getFilename() {
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath()
+ "/Android");
if (!dir.exists()) {
dir.mkdirs();
}
String uriSting = (dir.getAbsolutePath() + "/"
+ System.currentTimeMillis() + ".mp3");
return uriSting;
}