我知道某些设备/国家/地区禁用此选项来录制当前的电话。
但是在谷歌商店中有一个以上的应用程序可以启用电话录音(我知道因为我在设备上尝试了更多的应用程序并且工作正常) - 所以这可能是我的设备上的任务(galaxy s7 )。
但我仍然编写了所有执行录制操作的方法 - 但我仍然在录制时遇到异常,我不知道为什么以及如何解决它。
(*从任何其他AudioSource录制 - 工作正常)
许可:
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
代码:
public class TraceActionRecording
{
private static final String AUDIO_RECORDER_FILE_EXT_3GP = ".3gp";
private static final String AUDIO_RECORDER_FILE_EXT_MP4 = ".mp4";
private static final String AUDIO_RECORDER_FOLDER = "AudioRecorder";
private MediaRecorder recorder = null;
private String fileNameGenerator()
{
// method that return unique file name ( and file path )
}
public void startRecording()
{
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(fileNameGenerator());
try
{
recorder.prepare();
recorder.start();
}
catch (IllegalStateException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace(); // get the exception here - exception about fail to recoding
}
}
public void stopRecording()
{
if (null != recorder)
{
recorder.stop();
recorder.reset();
recorder.release();
recorder = null;
}
}
}