Open yzcheng90 opened 7 years ago
same error on a Pixel XL
I see the same thing with nexus 5x. Apparently the flash is being called too early sometimes. This solution suggests adding a 1s delay before attempting to handle flash: https://stackoverflow.com/a/40904906/4830411
I am having the same issue on a Samsung Note5 and S7. Any updates regarding a solution?
same to me on Android 5.x device
Have anyone got it working ?
I do not know why. However, if you clone the source lib and build the demo app that comes with the source, it will work on devices whose present the problem
@florent37 Have you faced that problem ?
A TextureView or a subclass can only be used with hardware acceleration enabled.
E/Camera2Controller: onCameraOpenError
W/TextureView: A TextureView or a subclass can only be used with hardware acceleration enabled.
D/ViewRootImpl: ViewPostImeInputStage processPointer 0
D/ViewRootImpl: ViewPostImeInputStage processPointer 1
I got that, then I just changed in my manifest android:hardwareAccelerated="true"
@amadeu01 @florent37 Adding "android:hardwareAccelerated="true" in manifest, does not fix the issue for me.
Have you got anything on your logs?
@sagartrehan Can you share your logs before it crashed?
Below are the logs:
Log when land to screen containing CameraFragment
03-09 21:57:39.412 5521-5521/com.rela E/Camera2Manager: Error setting flash:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.camera2.CaptureRequest$Builder.set(android.hardware.camera2.CaptureRequest$Key, java.lang.Object)' on a null object reference
at com.rela.camerafragment.internal.manager.impl.Camera2Manager.setFlashModeAndBuildPreviewRequest(Camera2Manager.java:711)
at com.rela.camerafragment.internal.manager.impl.Camera2Manager.setFlashMode(Camera2Manager.java:238)
at com.rela.camerafragment.internal.controller.impl.Camera2Controller.setFlashMode(Camera2Controller.java:130)
at com.rela.camerafragment.internal.ui.BaseAnncaFragment.onFlashModeChanged(BaseAnncaFragment.java:502)
at com.rela.camerafragment.internal.ui.BaseAnncaFragment.setFlashMode(BaseAnncaFragment.java:554)
at com.rela.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:255)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1430)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6809)
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)
03-09 21:57:39.413 5521-5521/com.rela E/Camera2Manager: Error setting flash:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.camera2.CaptureRequest$Builder.set(android.hardware.camera2.CaptureRequest$Key, java.lang.Object)' on a null object reference
at com.rela.camerafragment.internal.manager.impl.Camera2Manager.setFlashModeAndBuildPreviewRequest(Camera2Manager.java:711)
at com.rela.camerafragment.internal.manager.impl.Camera2Manager.setFlashMode(Camera2Manager.java:238)
at com.rela.camerafragment.internal.controller.impl.Camera2Controller.setFlashMode(Camera2Controller.java:130)
at com.rela.camerafragment.internal.ui.BaseAnncaFragment.onFlashModeChanged(BaseAnncaFragment.java:502)
at com.rela.camerafragment.internal.ui.BaseAnncaFragment.notifyListeners(BaseAnncaFragment.java:275)
at com.rela.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:271)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1430)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6809)
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)
Log when try to start record but screen freezes:
E/Legacy-CameraDevice-JNI: LegacyCameraDevice_nativeDetectSurfaceDimens: Error while querying surface width No such device (-19).
03-10 12:29:06.094 6454-7271/com.rela E/Camera2Manager: startVideoRecord:
java.lang.IllegalArgumentException: Surface was abandoned
at android.hardware.camera2.utils.SurfaceUtils.getSurfaceSize(SurfaceUtils.java:70)
at android.hardware.camera2.params.OutputConfiguration.<init>(OutputConfiguration.java:216)
at android.hardware.camera2.params.OutputConfiguration.<init>(OutputConfiguration.java:101)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSession(CameraDeviceImpl.java:504)
at com.rela.camerafragment.internal.manager.impl.Camera2Manager$6.run(Camera2Manager.java:294)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
Caused by: android.hardware.camera2.legacy.LegacyExceptionUtils$BufferQueueAbandonedException
at android.hardware.camera2.legacy.LegacyExceptionUtils.throwOnError(LegacyExceptionUtils.java:73)
at android.hardware.camera2.legacy.LegacyCameraDevice.getSurfaceSize(LegacyCameraDevice.java:583)
at android.hardware.camera2.utils.SurfaceUtils.getSurfaceSize(SurfaceUtils.java:68)
at android.hardware.camera2.params.OutputConfiguration.<init>(OutputConfiguration.java:216)
at android.hardware.camera2.params.OutputConfiguration.<init>(OutputConfiguration.java:101)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureSession(CameraDeviceImpl.java:504)
at com.rela.camerafragment.internal.manager.impl.Camera2Manager$6.run(Camera2Manager.java:294)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.os.HandlerThread.run(HandlerThread.java:65)
has anyone solved this.?
@abhishekthanvi8 I am also facing same issue. This issue is occurring on device supporting the Camera2 APIs. I included this library as module in my project so I modified one utlity class so that always Camera1 APIs will be used. I know this is wrong way to fix the problem but I was not having any other option since delivery was on head.
I will bang my head into the code to find the issue once I get time.
@sagartrehan where are you initiating the camera fragment? on the onCreate
, onResume
?
Hi, I also get this issue on OnePlus 5T, android 8.1.0。 I initiating camera fragment on the onResume() method because some phone will initiate failed when initiating camera fragment on the onCreate() method.
@amadeu01 Thank You. I also get the same issue then when I include the manifest file "android:hardwareAccelerated=" true" problem has been solved.
In my demo,if CameraSeesion is RepeatingCaptures
session.setRepeatingRequest()
If the distance between stopRepeating() and abortCaptures() is too short,happens this bug
you should execute stopRepeating() , abortCaptures() is not required
I guess the project is stopped, I would change the library to another implementation. I guess this might help https://www.youtube.com/watch?v=kuv8uK-5CLY
@jxj2118 @YoungLeeForeverBoy @fruitlangu
Error setting FLASH MODE like things happens even in success runs.
if you are facing no camera rendering at all,
02-29 18:18:01.856 15256 15302 E Camera2Manager: Error while setup camera sizes. 02-29 18:18:01.856 15256 15302 E Camera2Manager: java.lang.RuntimeException: Error retrieving camcorder profile params 02-29 18:18:01.856 15256 15302 E Camera2Manager: at android.media.CamcorderProfile.native_get_camcorder_profile(Native Method) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at android.media.CamcorderProfile.get(CamcorderProfile.java:467) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at com.github.florent37.camerafragment.internal.utils.CameraHelper.getCamcorderProfile(CameraHelper.java:450) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at com.github.florent37.camerafragment.internal.utils.CameraHelper.getCamcorderProfile(CameraHelper.java:429) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.prepareCameraOutputs(Camera2Manager.java:497) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager$3.run(Camera2Manager.java:206) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at android.os.Handler.handleCallback(Handler.java:888) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at android.os.Handler.dispatchMessage(Handler.java:100) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at android.os.Looper.loop(Looper.java:213) 02-29 18:18:01.856 15256 15302 E Camera2Manager: at android.os.HandlerThread.run(HandlerThread.java:67)
check your cameraid, some OEM like huawei, returns like 4 to 5 cameras, but some of them could not get the right CamcorderProfile. usually, the very first one cameraid works most of the times
E/Camera2Manager: Error setting flash: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.camera2.CaptureRequest$Builder.set(android.hardware.camera2.CaptureRequest$Key, java.lang.Object)' on a null object reference at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashModeAndBuildPreviewRequest(Camera2Manager.java:705) at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashMode(Camera2Manager.java:235) at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.setFlashMode(Camera2Controller.java:130) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onFlashModeChanged(BaseAnncaFragment.java:509) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.setFlashMode(BaseAnncaFragment.java:561) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:255) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1132) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:181) at com.trello.rxlifecycle.components.support.RxAppCompatActivity.onStart(RxAppCompatActivity.java:52) at cn.droidlover.xdroidmvp.mvp.XActivity.onStart(XActivity.java:70) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1254) at android.app.Activity.performStart(Activity.java:6930) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2756) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2864) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1567) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:156) at android.app.ActivityThread.main(ActivityThread.java:6524) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831) E/Camera2Manager: Error setting flash: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.camera2.CaptureRequest$Builder.set(android.hardware.camera2.CaptureRequest$Key, java.lang.Object)' on a null object reference at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashModeAndBuildPreviewRequest(Camera2Manager.java:705) at com.github.florent37.camerafragment.internal.manager.impl.Camera2Manager.setFlashMode(Camera2Manager.java:235) at com.github.florent37.camerafragment.internal.controller.impl.Camera2Controller.setFlashMode(Camera2Controller.java:130) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onFlashModeChanged(BaseAnncaFragment.java:509) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.notifyListeners(BaseAnncaFragment.java:277) at com.github.florent37.camerafragment.internal.ui.BaseAnncaFragment.onViewCreated(BaseAnncaFragment.java:272) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1132) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:181) at
invoke the addCamera() then is a error