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



我目前正在使用fluttercamera软件包录制和保存视频,但我注意到,当设备的摄像头在另一个应用程序上打开或在锁定屏幕上使用人脸解锁时,摄像头预览会出现异常。

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

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

此问题目前在此处和此处打开,但尚未解决。

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

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$2.onDisconnected(CameraCaptureSessionImpl.java:737)
E/CameraCaptureSession(31468):  at android.hardware.camera2.impl.CameraDeviceImpl$7.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

最新更新