MediaRecorder.setMaxDuration(int timer), что происходит, когда таймер истекает

В соответствии с документацией http://developer.android.com/reference/android/media/MediaRecorder.html#setMaxDuration(int)

запись прекращается, когда таймер истекает.

Стоп-ли это означает, что он вызывает внутреннюю функцию recorder.stop(), а затем восстанавливает состояние, в котором находилось приложение, перед вызовом recorder.start()?

Ответ 1

Я обнаружил, что мне нужно реализовать 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();
      }
   }
}

Ответ 2

Это обрабатывается OpenCore внутренне, и состояние рекордера после достижения максимальной продолжительности неинициализируется, так как оно называется stop(). Вы снова настроили рекордер, чтобы использовать его дальше.