如何自动限制Android录音长度?

Joh*_*jer 6 android audio-recording

我有这个工作代码.我需要它只在有限的时间内录制,而无需用户点击任何内容.我该怎么做呢?

    MediaRecorder recorder = new MediaRecorder();
File outputFile = new File(file);
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(outputFile.getAbsolutePath());
try {
    recorder.prepare();
} catch (IllegalStateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
recorder.start();
recorder.setMaxDuration(60000);
// stop
recorder.stop();
recorder.reset(); 
recorder.release();
Run Code Online (Sandbox Code Playgroud)

小智 6

这会做的很好:(在prepare / start函数之前使用setMaxDuration)

recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(outputFile.getAbsolutePath());

recorder.setMaxDuration(60000);
recorder.prepare();
recorder.start();
Run Code Online (Sandbox Code Playgroud)


Byt*_*eMe 0

您应该将 recorder.stop() 等调用放入计时器中

这是有关如何使用计时器任务的说明的链接http://developer.android.com/resources/articles/timed-ui-updates.html

Timer timer = new Timer();
timer.schedule(new FinishRecordingTask(), 100, 200);
Run Code Online (Sandbox Code Playgroud)

只需在调用 recorder.start() 之后添加即可