如何确保我的MediaRecorder有足够的时间在Android中准备?

时间:2014-01-26 23:56:01

标签: android video android-camera android-mediarecorder

我想让媒体录音机工作。问题是,当我准备我的媒体记录器时,我的代码崩溃了。像这样:mMediaRecorder.prepare()

会发生什么,它会抛出IOException。

在这次讨论中https://code.google.com/p/android/issues/detail?id=5050我读到问题是,在你致电mMediaRecorder.prepare()之前和之后需要有足够的时间(见第6篇帖子)。

这里的任何人都可以帮助我吗?如何确保我的媒体记录器有足够的时间准备?

1 个答案:

答案 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();
        }

});

编辑:我从grokkingandroid.com的教程中获得了这段代码。

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将被捕获。我认为这是处理这种情况的唯一方法。