要实现Android MediaRecorder的循环录制功能,可以使用以下方法:
private void startLoopRecording() {
MediaRecorder mediaRecorder = new MediaRecorder();
// 设置MediaRecorder的参数
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(getOutputFilePath());
try {
mediaRecorder.prepare();
mediaRecorder.start();
// 设置录制时间为10秒(可以根据需要修改)
Thread.sleep(10000);
mediaRecorder.stop();
mediaRecorder.reset();
mediaRecorder.release();
// 循环录制
startLoopRecording();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
private String getOutputFilePath() {
// 返回录制文件的保存路径
return Environment.getExternalStorageDirectory().getAbsolutePath() + "/recording.3gp";
}
startLoopRecording()方法即可。例如,在Activity的onCreate()方法中调用该方法。@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startLoopRecording();
}
这样,每次录制10秒后,会自动开始下一次录制,实现循环录制的功能。请注意,上述代码中的文件保存路径为外部存储器的根目录下的"recording.3gp"文件,可以根据需要修改保存路径和文件格式。