MediaRecorder.setMaxDuration(int timer)当计时器到期时会发生什么

Nam*_*tha 11 android

根据文档,http://developer.android.com/reference/android/media/MediaRecorder.html#setMaxDuration(int)

计时器到期时录制停止.

通过停止,它们是否意味着它在内部调用recorder.stop()然后在调用recorder.start()之前恢复应用程序所处的状态?

van*_*ery 37

我发现我必须实现MediaRecorder.OnInfoListener并在此时手动停止录制.完成后,MediaRecorder将返回初始状态,并且必须再次完成所有正常设置才能再次开始录制.

public class VideoCapture extends Activity implements MediaRecorder.OnInfoListener { 

   public void startVideoRecording() {
      // Normal MediaRecorder Setup
      recorder.setMaxDuration(10000); // 10 seconds
      recorder.setOnInfoListener(this);
   }

   public void onInfo(MediaRecorder mr, int what, int extra) { 
      if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
         Log.v("VIDEOCAPTURE","Maximum Duration Reached"); 
         mr.stop();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 重要的是不要忘记**recorder.setOnInfoListener(this)** (7认同)
  • 或者使用匿名类recorder.setOnInfoListener(new OnInfoListener(){@Override public void onInfo(MediaRecorder mr,int what,int extra){if(what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED){mr.stop();}}}); (3认同)

ogn*_*ian 1

这是由 OpenCore 内部处理的,达到最大持续时间后记录器的状态未初始化,因为它调用了 stop()。您已重新设置录音机以进一步使用它。