Camerakit-android: Camera is being used after Camera.release() was called

Created on 11 Jul 2017  路  13Comments  路  Source: CameraKit/camerakit-android

Process: com.flurgle.camerakit.demo, PID: 19753
java.lang.RuntimeException: Camera is being used after Camera.release() was called
    at android.hardware.Camera.startPreview(Native Method)
    at com.flurgle.camerakit.Camera1$2.onPictureTaken(Camera1.java:233)
    at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1185)
    at android.os.Handler.dispatchMessage(Handler.java:105)
    at android.os.Looper.loop(Looper.java:156)
    at android.os.HandlerThread.run(HandlerThread.java:61)

Device: Honor 8 Lite
OS: EMUI5.0(Android 7.0)

Medium In Progress Bug

Most helpful comment

Hi, this happened to me on 11.0.2 today, when rotating the device. Exactly like @eduardo4jesus mentioned.

Here is my stack
java.lang.RuntimeException: Camera is being used after Camera.release() was called at android.hardware.Camera.setDisplayOrientation(Native Method) at com.wonderkiln.camerakit.Camera1.setDisplayAndDeviceOrientation(Camera1.java:149) at com.wonderkiln.camerakit.CameraView$1.onDisplayOrDeviceOrientationChanged(CameraView.java:171) at com.wonderkiln.camerakit.DisplayOrientationDetector.dispatchOnDisplayOrDeviceOrientationChanged(DisplayOrientationDetector.java:92) at com.wonderkiln.camerakit.DisplayOrientationDetector$1.onOrientationChanged(DisplayOrientationDetector.java:65) at android.view.OrientationEventListener$SensorEventListenerImpl.onSensorChanged(OrientationEventListener.java:143) at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:830) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:142) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

All 13 comments

I am having this same problem, but it's happening in onTouch event

                                                                    java.lang.RuntimeException: Camera is being used after Camera.release() was called
                                                                        at android.hardware.Camera.native_getParameters(Native Method)
                                                                        at android.hardware.Camera.getParameters(Camera.java:1952)
                                                                        at com.flurgle.camerakit.Camera1$4.onTouch(Camera1.java:581)
                                                                        at android.view.View.dispatchTouchEvent(View.java:10771)
                                                                        at com.flurgle.camerakit.CameraView$2.onTouch(CameraView.java:174)
                                                                        at android.view.View.dispatchTouchEvent(View.java:10771)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2859)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2535)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2865)
                                                                        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2550)
                                                                        at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:583)
                                                                        at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1884)
                                                                        at android.app.Activity.dispatchTouchEvent(Activity.java:3240)
                                                                        at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:71)
                                                                        at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:545)
                                                                        at android.view.View.dispatchPointerEvent(View.java:11004)
                                                                        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5124)
                                                                        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4976)
                                                                        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4501)
                                                                        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4554)
                                                                        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4520)
                                                                        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4653)
                                                                        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4528)
                                                                        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4710)
                                                                        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4501)
                                                                        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4554)
                                                                        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4520)
                                                                        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4528)
                                                                        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4501)
                                                                        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:7022)
                                                                        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6947)
                                                                        at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6908)
                                                                        at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:7132)
                                                                        at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
                                                                        at android.os.MessageQueue.nativePollOnce(Native Method)
                                                                        at android.os.MessageQueue.next(MessageQueue.java:323)
                                                                        at android.os.Looper.loop(Looper.java:136)

I can reproduce my problem really easy, basically I just rotate my screen, and as soon it starts responding, I rotate it back.

This is my stack:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      Process: com.company.app, PID: 30186
                                                                      java.lang.RuntimeException: Unable to pause activity {com.company.app/com.company.app.MainActivity}: java.lang.RuntimeException: Camera is being used after Camera.release() was called
                                                                          at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4432)
                                                                          at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4391)
                                                                          at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5167)
                                                                          at android.app.ActivityThread.access$1100(ActivityThread.java:219)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1741)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                          at android.os.Looper.loop(Looper.java:145)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:6939)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at java.lang.reflect.Method.invoke(Method.java:372)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
                                                                       Caused by: java.lang.RuntimeException: Camera is being used after Camera.release() was called
                                                                          at android.hardware.Camera._stopPreview(Native Method)
                                                                          at android.hardware.Camera.stopPreview(Camera.java:803)
                                                                          at com.flurgle.camerakit.Camera1.stop(Camera1.java:103)
                                                                          at com.flurgle.camerakit.CameraView.stop(CameraView.java:312)
                                                                          at com.company.app.userinterface.widgets.Camera.onPause(Camera.java:46)
                                                                          at com.company.app.userinterface.screens.CameraFragment.onPause(CameraFragment.java:95)
                                                                          at android.app.Fragment.performPause(Fragment.java:2318)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                          at android.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:1901)
                                                                          at android.app.Fragment.performPause(Fragment.java:2315)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
                                                                          at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1065)
                                                                          at android.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:1901)
                                                                          at android.app.Activity.performPause(Activity.java:6758)
                                                                          at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1338)
                                                                          at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4418)
                                                                          at android.app.ActivityThread.performPauseActivity(ActivityThread.java:4391)聽
                                                                          at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5167)聽
                                                                          at android.app.ActivityThread.access$1100(ActivityThread.java:219)聽
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1741)聽
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)聽
                                                                          at android.os.Looper.loop(Looper.java:145)聽
                                                                          at android.app.ActivityThread.main(ActivityThread.java:6939)聽
                                                                          at java.lang.reflect.Method.invoke(Native Method)聽
                                                                          at java.lang.reflect.Method.invoke(Method.java:372)聽
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)聽
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)聽

Have a solution for this issue?

Yes, solution in my last pull request)

any solutions on this problem?

@austinkettner I saw that you assigned to you this bug, are you working on it? Can I expect a fix soon?

Yes @bruferrari we will address this soon. Currently expect it sometime next week, while I know you would like it sooner, I don't want to promise something that won't happen.

Hi, this happened to me on 11.0.2 today, when rotating the device. Exactly like @eduardo4jesus mentioned.

Here is my stack
java.lang.RuntimeException: Camera is being used after Camera.release() was called at android.hardware.Camera.setDisplayOrientation(Native Method) at com.wonderkiln.camerakit.Camera1.setDisplayAndDeviceOrientation(Camera1.java:149) at com.wonderkiln.camerakit.CameraView$1.onDisplayOrDeviceOrientationChanged(CameraView.java:171) at com.wonderkiln.camerakit.DisplayOrientationDetector.dispatchOnDisplayOrDeviceOrientationChanged(DisplayOrientationDetector.java:92) at com.wonderkiln.camerakit.DisplayOrientationDetector$1.onOrientationChanged(DisplayOrientationDetector.java:65) at android.view.OrientationEventListener$SensorEventListenerImpl.onSensorChanged(OrientationEventListener.java:143) at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent(SystemSensorManager.java:830) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:325) at android.os.Looper.loop(Looper.java:142) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

Hi, I see this still occurred in 0.12.0, any updates on it?

Any news on this one?

This should be fully resolved in our 1.0.0 PR (#318) Check it out!

Awesome, really appreciate what you guys are doing, the Camera2 API is a horror show!

Was this page helpful?
0 / 5 - 0 ratings