fluttercameraphoto

Flutter CameraCaptureCallback STATE_WAITING_FOCUS


It is getting very slow to take a picture with Android. It was well working before. I have only updated Flutter and my librairies. I am using the last version of camera 0.10.5+2 (but it is the same issue with the previous ones).

My Code

  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();
}

My Log

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

This line above appear 50 times

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

Solution

  • I have found the solution here : https://github.com/flutter/flutter/issues/84957

    I have used those lines of code :

    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);