Flutter: исключение отключения камеры при открытии других приложений камеры - PullRequest
0 голосов
/ 24 февраля 2020

В настоящее время я использую пакет флаттера camera для записи и сохранения видео, но я заметил, что при предварительном просмотре камеры возникает исключение, когда камера устройства открывается в другом приложении или когда на устройстве используется разблокировка лица. Экран блокировки.

Я пытался использовать 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

Есть идеи, как заставить пакет камеры выполнить повторную инициализацию?

1 Ответ

0 голосов
/ 26 февраля 2020

При возобновлении повторной инициализации Камера

@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 / съемка с использованием флаттера-камеры-a9c11d282632

...