我想让媒体录音机工作。问题是,当我准备我的媒体记录器时,我的代码崩溃了。像这样:mMediaRecorder.prepare()
会发生什么,它会抛出IOException。
在这次讨论中https://code.google.com/p/android/issues/detail?id=5050我读到问题是,在你致电mMediaRecorder.prepare()
之前和之后需要有足够的时间(见第6篇帖子)。
这里的任何人都可以帮助我吗?如何确保我的媒体记录器有足够的时间准备?
答案 0 :(得分:0)
Use an onPreparedListener to ensure it's ready
实施例
MediaPlayer mp = new MediaPlayer();
mp.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
MediaRecorder recorder = null;
private void startRecording(File file) {
if (recorder != null) {
recorder.release();
}
recorder = new MediaRecorder();
recorder.setAudioSource(AudioSource.MIC);
recorder.setOutputFormat(OutputFormat.THREE_GPP);
recorder.setAudioEncoder(AudioEncoder.AMR_WB);
recorder.setOutputFile(file.getAbsolutePath());
try {
recorder.prepare();
recorder.start();
} catch (IOException e) {
Log.e("giftlist", "io problems while preparing [" +
file.getAbsolutePath() + "]: " + e.getMessage());
}
}
这只是一个示例,但正如您所看到的,prepare()
和start()
方法位于try-catch
块中,因此如果它在MediaRecorder
未启动时启动已做好充分准备,IOException
将被捕获。我认为这是处理这种情况的唯一方法。