目前我正在使用MediaRecorder API进行录音。以下是使用的代码段:
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(filepath);
mRecorder.setMaxFileSize(5000);
try {
mRecorder.prepare();
mRecorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
使用我测试过的上述代码,可以录制大小为5Kb的音频文件,然后录制停止。
我想要做的是连续录制,它将被保存为5Kb文件,直到我调用以下代码:
mRecorder.stop();
mRecorder.reset();
mRecorder.release();
有可能吗?目前,一旦达到5Kb,录音就会完全停止。
提前致谢。
答案 0 :(得分:0)
@SubbaReddy PolamReddy感谢您的提示。你说的有意义,使用setMaxFileSize(filesize In Bytes)设置文件限制要容易得多。
答案 1 :(得分:0)
我使用不同的方法。每隔1分钟,我重新启动录制过程,如下所示:
int RestartAfterSeconds=60;
Boolean recording =false;
private void Stop_Record(){
if (recording) {
recording=false;
// ................
// ................
// ................
// your codes here
// ................
// ................
// ................
}
}
public void Start_record(){
if (!recording) {
recording=true;
// ................
// ................
// ................
// your codes here
// ................
// ................
// ................
Sheduler_handler.postDelayed(new Runnable() { @Override public void run() { Restarter_Recording(); } }, RestartAfterSeconds * 1000); //1000 ms is 1 second
}
}
public void Restarter_Recording(){ if(!recording) return;
// Stop now
Stop_Record();
//and Fire start immediately
Sheduler_handler.postDelayed(new Runnable() { @Override public void run() { Start_Record(); } }, 100);
}
P.S。视频文件之间只有微小的差距,但对我而言,此刻并不重要。