2010-07-12 14 views
11

Según la documentación, http://developer.android.com/reference/android/media/MediaRecorder.html#setMaxDuration(int)MediaRecorder.setMaxDuration (int contador de tiempo) lo que sucede cuando expira el temporizador

la grabación se detiene cuando el temporizador expira.

Al detener, ¿significa que llama internamente recorder.stop() y luego restaura el estado en que se encontraba la aplicación antes de llamar a recorder.start()?

+0

¿Podría responder a su pregunta? –

Respuesta

1

Esto es manejado por OpenCore internamente, y el estado de la grabadora después de alcanzar la duración máxima no está inicializado, ya que se llama a tope(). Ha configurado la grabadora nuevamente para usarla más.

+0

el problema es que mi aplicación sale (la pantalla se queda en blanco tan pronto expira el temporizador). Eso no se supone que suceda Debería dejar de grabar y volver al estado de vista previa (el estado en el que estaba antes de presionar grabar). ¿es eso posible? También es posible manejarlo yo mismo como en onInfo if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {¿puedo llamar a mi propia función que llama a recorder.stop() aquí? } – Namratha

+0

Intenté llamar a mi propia función como mencioné, pero se bloqueó de la misma manera que antes – Namratha

+0

Lo que se describe arriba es lo que se supone que ocurre, pero en mi experiencia eso no es lo que realmente sucede. – vanevery

34

He encontrado que tengo que implementar MediaRecorder.OnInfoListener y detener manualmente la grabación en ese punto. Una vez hecho esto, el MediaRecorder regresa al estado inicial y toda la configuración normal debe realizarse de nuevo para comenzar a grabar de nuevo.

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

Es importante no olvidar ** recorder.setOnInfoListener (este) ** –

+2

o Usar recorder.setOnInfoListener clase anónima (nueva OnInfoListener() { \t \t \t \t @ Override \t \t \t \t public void onInfo (MediaRecorder mr , int qué, int adicional) { \t \t \t \t \t si (lo == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) { \t \t \t \t \t \t mr.stop(); \t \t \t \t \t} \t \t \t \t} \t \t \t}); –

Cuestiones relacionadas