ideacreation / react-native-barcodescanner

A barcode scanner component for react native - not maintained anymore - use react-native-camera
MIT License
537 stars 162 forks source link

Camera crashes app on destroy component #49

Closed fbacker closed 7 years ago

fbacker commented 7 years ago

I use the Camera in a ScrollableTabView. If I enable the camera and then remove the component from view (scroll to another page or disable camera scanner) my app crashes.

Works fine in avd emulator but not on device.

"react": "15.2.1",
"react-native": "0.31.0",
"react-native-barcodescanner": "^3.1.1",

I/DEBUG   ( 1892): backtrace:
I/DEBUG   ( 1892):     #00  pc 000206a0  /system/lib/libc.so (__ioctl+8)
I/DEBUG   ( 1892):     #01  pc 0002d117  /system/lib/libc.so (ioctl+14)
I/DEBUG   ( 1892):     #02  pc 0001e20d  /system/lib/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+140)
I/DEBUG   ( 1892):     #03  pc 0001e6f3  /system/lib/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+42)
I/DEBUG   ( 1892):     #04  pc 0001e8ff  /system/lib/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+118)
I/DEBUG   ( 1892):     #05  pc 0001a491  /system/lib/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+30)
I/DEBUG   ( 1892):     #06  pc 00022ecb  /system/lib/libcamera_client.so
I/DEBUG   ( 1892):     #07  pc 000207e3  /system/lib/libcamera_client.so (android::Camera::stopPreview()+20)
I/DEBUG   ( 1892):     #08  pc 00084c81  /system/lib/libandroid_runtime.so
I/DEBUG   ( 1892):     #09  pc 0001ea90  /system/lib/libdvm.so (dvmPlatformInvoke+116)
I/DEBUG   ( 1892):     #10  pc 0004f1a7  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
I/DEBUG   ( 1892):     #11  pc 00027f20  /system/lib/libdvm.so
I/DEBUG   ( 1892):     #12  pc 0002f130  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
I/DEBUG   ( 1892):     #13  pc 0002c7d4  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
I/DEBUG   ( 1892):     #14  pc 00061905  /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
I/DEBUG   ( 1892):     #15  pc 00069ac3  /system/lib/libdvm.so
I/DEBUG   ( 1892):     #16  pc 00027f20  /system/lib/libdvm.so
I/DEBUG   ( 1892):     #17  pc 0002f130  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
I/DEBUG   ( 1892):     #18  pc 0002c7d4  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
I/DEBUG   ( 1892):     #19  pc 00061623  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+338)
I/DEBUG   ( 1892):     #20  pc 0004ad87  /system/lib/libdvm.so
I/DEBUG   ( 1892):     #21  pc 0004e913  /system/lib/libandroid_runtime.so
I/DEBUG   ( 1892):     #22  pc 0004f64d  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+364)
I/DEBUG   ( 1892):     #23  pc 00001003  /system/bin/app_process
I/DEBUG   ( 1892):     #24  pc 0000e493  /system/lib/libc.so (__libc_init+50)
I/DEBUG   ( 1892):     #25  pc 00000d24  /system/bin/app_process
fbacker commented 7 years ago

An area in the screen gets black after camera is closed.

screenshot_2016-08-15-12-56-36

fbacker commented 7 years ago

More info. If this issue happens. Close the app and open again. Now when trying to access the Camera this error shows. Seems like the issue is that it doesn't release the Camera correctly? Need to restart device, doesn't help to reinstall.

E/BarcodeScannerCameraManager(14904): java.lang.RuntimeException: Fail to connect to camera service
E/BarcodeScannerCameraManager(14904): java.lang.RuntimeException: Fail to connect to camera service
E/BarcodeScannerCameraManager(14904):   at android.hardware.Camera.native_setup(Native Method)
E/BarcodeScannerCameraManager(14904):   at android.hardware.Camera.<init>(Camera.java:374)
E/BarcodeScannerCameraManager(14904):   at android.hardware.Camera.open(Camera.java:344)
E/BarcodeScannerCameraManager(14904):   at com.eguma.barcodescanner.CameraManager.getCameraInstance(CameraManager.java:70)
E/BarcodeScannerCameraManager(14904):   at com.eguma.barcodescanner.CameraManager.getCameraInstance(CameraManager.java:41)
E/BarcodeScannerCameraManager(14904):   at com.eguma.barcodescanner.CameraManager.<init>(CameraManager.java:13)
E/BarcodeScannerCameraManager(14904):   at com.eguma.barcodescanner.CameraPreview.<init>(CameraPreview.java:41)
E/BarcodeScannerCameraManager(14904):   at com.eguma.barcodescanner.BarcodeScannerView.<init>(BarcodeScannerView.java:32)
E/BarcodeScannerCameraManager(14904):   at com.eguma.barcodescanner.BarcodeScannerManager.createViewInstance(BarcodeScannerManager.java:45)
E/BarcodeScannerCameraManager(14904):   at com.eguma.barcodescanner.BarcodeScannerManager.createViewInstance(BarcodeScannerManager.java:13)
E/BarcodeScannerCameraManager(14904):   at com.facebook.react.uimanager.ViewManager.createView(ViewManager.java:44)
E/BarcodeScannerCameraManager(14904):   at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:211)
E/BarcodeScannerCameraManager(14904):   at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:148)
E/BarcodeScannerCameraManager(14904):   at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:890)
E/BarcodeScannerCameraManager(14904):   at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:863)
E/BarcodeScannerCameraManager(14904):   at com.facebook.react.uimanager.GuardedChoreographerFrameCallback.doFrame(GuardedChoreographerFrameCallback.java:32)
E/BarcodeScannerCameraManager(14904):   at com.facebook.react.uimanager.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:131)
E/BarcodeScannerCameraManager(14904):   at android.view.Choreographer$CallbackRecord.run(Choreographer.java:759)
E/BarcodeScannerCameraManager(14904):   at android.view.Choreographer.doCallbacks(Choreographer.java:574)
E/BarcodeScannerCameraManager(14904):   at android.view.Choreographer.doFrame(Choreographer.java:543)
E/BarcodeScannerCameraManager(14904):   at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
E/BarcodeScannerCameraManager(14904):   at android.os.Handler.handleCallback(Handler.java:733)
E/BarcodeScannerCameraManager(14904):   at android.os.Handler.dispatchMessage(Handler.java:95)
E/BarcodeScannerCameraManager(14904):   at android.os.Looper.loop(Looper.java:136)
E/BarcodeScannerCameraManager(14904):   at android.app.ActivityThread.main(ActivityThread.java:5147)
E/BarcodeScannerCameraManager(14904):   at java.lang.reflect.Method.invokeNative(Native Method)
E/BarcodeScannerCameraManager(14904):   at java.lang.reflect.Method.invoke(Method.java:515)
E/BarcodeScannerCameraManager(14904):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
E/BarcodeScannerCameraManager(14904):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
E/BarcodeScannerCameraManager(14904):   at dalvik.system.NativeStart.main(Native Method)
fbacker commented 7 years ago

More info. This error occurs on a Samsung Galaxy S3, KitKat 4.4.4 Samsung Galaxy S5, Marshmallow 6.0.1

Tested on a Sony Jelly Bean 4.3 and here it works fine.

fbacker commented 7 years ago

notices react-native-camera worked better so has created a pull request with support for android zxing

https://github.com/lwansbrough/react-native-camera/pull/370