cameraview icon indicating copy to clipboard operation
cameraview copied to clipboard

Crash when calling CameraView.stop in onPictureTakenCallback

Open radimjanda754 opened this issue 8 years ago • 1 comments

Im trying to fix this issue simillar like this: https://github.com/google/cameraview/issues/29 , which is probably caused by finishing activity too early after picture was taken. My idea was to properly close CameraView after picture was taken before finishing activity. But anyway Im trying to close camera in onPictureTakenCallback i get this error:

Fatal Exception: java.lang.RuntimeException: Camera is being used after Camera.release() was called
       at android.hardware.Camera.native_cancelAutoFocus(Camera.java)
       at android.hardware.Camera.cancelAutoFocus(Camera.java:1383)
       at com.google.android.cameraview.Camera1$3.onPictureTaken(Camera1.java:246)
       at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1170)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5569)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:931)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:726)

Here is code:

mCamera.addCallback(new CameraView.Callback() {
            @Override
            public void onPictureTaken(CameraView cameraView, byte[] data) {
                super.onPictureTaken(cameraView, data);
                mCamera.stop(); // causes error
            }
        });

mBtnCapture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCamera.takePicture();
            }
        });

@Override
protected void onPause() {
        mCamera.stop();
        super.onPause();
    }

@Override
protected void onResume() {
        super.onResume();
        mCamera.start();
    }

radimjanda754 avatar Aug 03 '17 22:08 radimjanda754

Perhaps you can use this fix for it : https://github.com/google/cameraview/pull/158

smellouk avatar Sep 26 '17 09:09 smellouk