Tengo la aplicación de Android clásica con vista previa de la cámara (implem común que se puede encontrar en muchos tutoriales [marakana etc.]) que se supone toma fotos en un intervalo de tiempo dado. Enhebrar y matar hilos está hecho, se manejan errores como "method called after release"
. Pero a veces se produce el conocido error 100
. Acepté el hecho de que sucediera y traté de manejarlo también. Implementé ErrorCallback
y su método onError
donde se lanza el objeto de la cámara actual e instalé uno nuevo como está escrito en la documentación oficial.recreando el objeto de la cámara después del error 100 (el servidor de la cámara murió)
Pero (sin sorpresa) no es suficiente. Es posible que se haya asignado erróneamente una nueva cámara porque ahora aparece un mensaje "CameraDemo has been exited unexpectedly"
. He leído muchos documentos y ejemplos con la esperanza de que se explicará un procedimiento adecuado, pero aparentemente nadie tiene ese problema. Entonces, me gustaría preguntar qué más debería hacer además de lanzar y crear una nueva cámara. Aquí está el código:
ErrorCallback CEC = new ErrorCallback()
{
public void onError(int error, Camera camera)
{
Log.d("CameraDemo", "camera error detected");
if(error == Camera.CAMERA_ERROR_SERVER_DIED)
{
Log.d("CameraDemo", "attempting to reinstantiate new camera");
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release(); //written in documentation...
camera = null;
camera = Camera.open();
}
}
};
Poco - Si suelto y volver a crear la cámara en onError
devolución de llamada a continuación RuntimeException
Método llamado después de la liberación (takePicture) se eleva. Entonces, ¿debería asignar de alguna manera el soporte de superficie a la cámara nuevamente o volver a crear el soporte de superficie también?
Sería suficiente para dirigirme, p. a algunos foros, donde se describe o resuelve, etc. Gracias por cualquier ayuda.
¿Ha encontrado una solución? Por favor, comparte – Gena