2009-08-09 25 views
10

Estoy construyendo una aplicación de cámara, donde los videos se capturan continuamente y se guardan en la tarjeta SD. Los videos son cortos (algunos minutos) y su duración está preestablecida con setMaxDuration().Android: ¿Cómo inicializar MediaRecorder sin una superficie válida para la vista previa del video?

Todo el proceso funciona bien, mientras que la actividad principal está en primer plano. Pero, cuando voy a otra actividad (por ejemplo, ajustes), la grabación de video funciona en segundo plano hasta que se alcanza la duración máxima. El archivo se guarda, pero no se puede iniciar una nueva secuencia porque prepare() falla, aparentemente porque a setPreviewDisplay() no le gusta no tener una superficie adecuada para adjuntar.

Intenté utilizar una superficie ficticia, una SurfaceHolder ficticia, lockCanvas() y varios otros trucos, pero nada funciona. ¿Hay alguna manera de inicializar MediaRecorder sin una superficie válida?

Respuesta

-1

¿Está implementando devoluciones de llamada de Surface?

¿Por qué necesita inicializar MediaRecorder sin una superficie válida?

¿Se supone que grabas incluso cuando dejas la actividad principal? ¿O la grabación se detiene antes de que se genere la otra actividad?

+0

Sí, he implementado las devoluciones de llamada de Surface. Todo funciona bien cuando hay una superficie de vista previa válida. Pero, quiero grabar incluso cuando salgo de la actividad principal. La aplicación debería poder iniciar la grabación de video, independientemente de si la superficie de vista previa es visible o no. Pero, todo lo que intenté sugiere que esto aún no es posible con Android. ¿Alguien puede probarme que estoy equivocado? – Robert

0

Creo que la aplicación IP Webcam puede hacer esto, aunque no sé cómo. Tal vez solo funciona en> = 2.3. No estoy seguro en qué versión lo vi funcionar. Hice una pregunta para ver cómo funciona.

Cuestiones relacionadas