Flutter CameraCaptureCallback STATE_WAITING_FOCUS

Chl*_*loé 5 camera photo flutter

使用 Android 拍照变得非常慢。之前工作得很好。我只更新了 Flutter 和我的库。我使用的是最新版本的相机0.10.5+2(但与之前的版本有同样的问题)。

我的代码

  void initState() {
    super.initState();
    _cameraController = CameraController(widget.camera, ResolutionPreset.medium, enableAudio: false,);
    _cameraController.setFocusMode(FocusMode.locked);
    _cameraController.setFlashMode(FlashMode.off);
    _initializeControllerFuture = _cameraController.initialize();
  }

  Future<void> takePhoto({bool? oneShot}) async {
      await _initializeControllerFuture;
       XFile photo = await _cameraController.takePicture();
}
Run Code Online (Sandbox Code Playgroud)

我的日志

D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_WAITING_FOCUS | afState: 2 | aeState: 2
Run Code Online (Sandbox Code Playgroud)

上面这行出现了 50 次

D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_WAITING_FOCUS | afState: 2 | aeState: 2
W/CameraCaptureCallback( 5282): Focus timeout, moving on with capture
I/Camera  ( 5282): captureStillPicture
D/Camera  ( 5282): Updating builder with feature: ExposureLockFeature
D/Camera  ( 5282): Updating builder with feature: ExposurePointFeature
D/Camera  ( 5282): Updating builder with feature: ZoomLevelFeature
D/Camera  ( 5282): Updating builder with feature: AutoFocusFeature
D/Camera  ( 5282): Updating builder with feature: NoiseReductionFeature
I/Camera  ( 5282): updateNoiseReduction | currentSetting: fast
D/Camera  ( 5282): Updating builder with feature: FocusPointFeature
D/Camera  ( 5282): Updating builder with feature: ResolutionFeature
D/Camera  ( 5282): Updating builder with feature: SensorOrientationFeature
D/Camera  ( 5282): Updating builder with feature: FlashFeature
D/Camera  ( 5282): Updating builder with feature: ExposureOffsetFeature
D/Camera  ( 5282): Updating builder with feature: FpsRangeFeature
I/Camera  ( 5282): sending capture request
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
I/Camera  ( 5282): unlockAutoFocus
I/Camera  ( 5282): refreshPreviewCaptureSession
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_CAPTURING | afState: 2 | aeState: 2
I/Camera  ( 5282): onImageAvailable
Run Code Online (Sandbox Code Playgroud)

Chl*_*loé 5

我在这里找到了解决方案:https ://github.com/flutter/flutter/issues/84957

我已经使用了这些代码行:

await _controller!.setFocusMode(FocusMode.locked);
await _controller!.setExposureMode(ExposureMode.locked);

 final picture = await _controller!.takePicture();

await _controller!.setFocusMode(FocusMode.auto);
await _controller!.setExposureMode(ExposureMode.auto);
Run Code Online (Sandbox Code Playgroud)