Android - CameraDevice 已关闭

Gio*_*yan 5 android device-orientation android-camera2

我一直在尝试将 Camera2 api 集成到我的应用程序中。当我从纵向模式切换到横向模式时,它会引发异常

    java.lang.IllegalStateException: CameraDevice was already closed
at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError(CameraDeviceImpl.java:1984)
at android.hardware.camera2.impl.CameraDeviceImpl.submitCaptureRequest(CameraDeviceImpl.java:825)
at android.hardware.camera2.impl.CameraDeviceImpl.setRepeatingRequest(CameraDeviceImpl.java:880)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.setRepeatingRequest(CameraCaptureSessionImpl.java:231)
at com.essentialsln.memtalk.ui.fragments.Camera2Fragment$11.onConfigured(Camera2Fragment.java:795)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.os.HandlerThread.run(HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)

Ank*_*ukh 3

我遇到了类似的问题,这对我有帮助。如果您一直在引用示例应用程序,则应该通过重写 onClosed(CameraDevice) 方法来停止 CameraDevice.StateCallback 中的线程:

 mCameraDevice.createCaptureSession(outputSurfaces,
                new CameraCaptureSession.StateCallback() {

                    @Override
                    public void onClosed(@NonNull CameraCaptureSession session) {
                        super.onClosed(session);
                        stopBackgroundThread();
                    } 
Run Code Online (Sandbox Code Playgroud)