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?
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