Flutter:打开其他相机应用程序时相机断开连接异常

Flutter: Camera disconnect exception when other camera apps are opened

我目前正在使用flutter camera包来录制和保存视频,但我发现当设备的相机在另一个应用程序上打开或面部解锁时,相机预览会出现异常用于锁屏。

我试过使用 didChangeAppLifecycleState 来获取或重新初始化相机,但还没有成功。

      await model.fetchCameras();
      if (model.cameras.isNotEmpty) {
        await model.onNewCameraSelected(model.cameras[model.cameraIndex], true);

      }
    }

此问题目前已打开 here and here,但尚未解决。

当设备的摄像头在另一个应用程序中打开时出现此异常。我尝试在上面的示例代码中处理相机并重新初始化它,但是它不起作用。

E/CameraCaptureSession(31468): android.hardware.camera2.CameraAccessException: CAMERA_DISCONNECTED (2): cancelRequest:458: Camera device no longer alive
E/CameraCaptureSession(31468):  at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:814)
E/CameraCaptureSession(31468):  at android.hardware.camera2.impl.ICameraDeviceUserWrapper.cancelRequest(ICameraDeviceUserWrapper.java:95)
E/CameraCaptureSession(31468):  at android.hardware.camera2.impl.CameraDeviceImpl.stopRepeating(CameraDeviceImpl.java:1134)
E/CameraCaptureSession(31468):  at android.hardware.camera2.impl.CameraCaptureSessionImpl.close(CameraCaptureSessionImpl.java:526)
E/CameraCaptureSession(31468):  at android.hardware.camera2.impl.CameraCaptureSessionImpl.onDisconnected(CameraCaptureSessionImpl.java:737)
E/CameraCaptureSession(31468):  at android.hardware.camera2.impl.CameraDeviceImpl.run(CameraDeviceImpl.java:242)
E/CameraCaptureSession(31468):  at android.os.Handler.handleCallback(Handler.java:873)
E/CameraCaptureSession(31468):  at android.os.Handler.dispatchMessage(Handler.java:99)
E/CameraCaptureSession(31468):  at android.os.Looper.loop(Looper.java:214)
E/CameraCaptureSession(31468):  at android.app.ActivityThread.main(ActivityThread.java:6981)
E/CameraCaptureSession(31468):  at java.lang.reflect.Method.invoke(Native Method)
E/CameraCaptureSession(31468):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
E/CameraCaptureSession(31468):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
E/CameraCaptureSession(31468): Caused by: android.os.ServiceSpecificException: cancelRequest:458: Camera device no longer alive (code 4)
E/CameraCaptureSession(31468):  at android.os.Parcel.createException(Parcel.java:1980)
E/CameraCaptureSession(31468):  at android.os.Parcel.readException(Parcel.java:1934)
E/CameraCaptureSession(31468):  at android.os.Parcel.readException(Parcel.java:1884)
E/CameraCaptureSession(31468):  at android.hardware.camera2.ICameraDeviceUser$Stub$Proxy.cancelRequest(ICameraDeviceUser.java:402)
E/CameraCaptureSession(31468):  at android.hardware.camera2.impl.ICameraDeviceUserWrapper.cancelRe

关于如何强制相机包重新初始化有什么想法吗?

恢复时重新初始化相机

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  if (state == AppLifecycleState.resumed) {
    _controller != null
        ? _initializeControllerFuture = _controller.initialize()
        : null; //on pause camera is disposed, so we need to call again "issue is only for android"
  }
}

结帐https://medium.com/@navinkumar0118/take-a-picture-using-flutter-camera-a9c11d282632