Así que he leído la API de la cámara y no he podido encontrar nada al respecto. Estoy usando la cámara para tomar marcos y funciona perfectamente, hasta que intento liberar la cámara. Me replicado el error en una secuencia de llamadas:error de lanzamiento de la cámara Android de PreviewCallback
camera = Camera.open();
camera.setPreviewDisplay(getHolder());
Parameters params = camera.getParameters();
List<Size> ls = params.getSupportedPreviewSizes();
Size size = ls.get(1);
this.width = size.width;
this.height = size.height;
params.setPreviewSize(size.width, size.height);
camera.setParameters(params);
camera.setDisplayOrientation(90);
camera.setPreviewCallback(this);
camera.startPreview();
camera.stopPreview();
camera.release();
El error que consigo es
03-22 13:31:42.592: E/AndroidRuntime(14152): java.lang.RuntimeException: Method called after release()
03-22 13:31:42.592: E/AndroidRuntime(14152): at android.hardware.Camera.setHasPreviewCallback(Native Method)
03-22 13:31:42.592: E/AndroidRuntime(14152): at android.hardware.Camera.access$600(Camera.java:114)
03-22 13:31:42.592: E/AndroidRuntime(14152): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:545)
03-22 13:31:42.592: E/AndroidRuntime(14152): at android.os.Handler.dispatchMessage(Handler.java:99)
03-22 13:31:42.592: E/AndroidRuntime(14152): at android.os.Looper.loop(Looper.java:130)
03-22 13:31:42.592: E/AndroidRuntime(14152): at android.app.ActivityThread.main(ActivityThread.java:3684)
03-22 13:31:42.592: E/AndroidRuntime(14152): at java.lang.reflect.Method.invokeNative(Native Method)
03-22 13:31:42.592: E/AndroidRuntime(14152): at java.lang.reflect.Method.invoke(Method.java:507)
03-22 13:31:42.592: E/AndroidRuntime(14152): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:845)
03-22 13:31:42.592: E/AndroidRuntime(14152): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
03-22 13:31:42.592: E/AndroidRuntime(14152): at dalvik.system.NativeStart.main(Native Method)
Así que lo que está sucediendo no está en una de mis funciones. Si comento la cámara.setPreviewCallback (this); entonces este error no aparece, pero obviamente pierdo mi devolución de llamada, que es el punto de incluir la cámara en mi aplicación.
También enfrentado mismo problema, lo fijé usando [http://stackoverflow.com/a/34064944/4531507](http: //stackoverflow.com/a/34064944/4531507) –
La regla general es que cualquier llamada a la cámara puede lanzar una RuntimeException en cualquier momento, incluso si la llamada específica no tiene esta excepción oficialmente documentada. Si sus dispositivos de prueba nunca se portan mal de esta manera, tenga la seguridad de que una desafortunada superposición de hardware, ROM y software instalado provocará este bloqueo, ya sea de manera reproducible o irreproducible. –