颤动CameraCaptureCallback STATE_WAITING_FOCUS

问题描述 投票:0回答:1

用Android拍照变得非常慢。之前工作得很好。我只更新了 Flutter 和我的库。我正在使用最新版本的camera 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();
}

我的日志

D/CameraCaptureCallback( 5282): CameraCaptureCallback | state: STATE_WAITING_FOCUS | afState: 2 | aeState: 2

上面这行出现了 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
flutter camera photo
1个回答
0
投票

我在这里找到了解决方案: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);
© www.soinside.com 2019 - 2024. All rights reserved.