Подтвердить что ты не робот

Есть ли способ программно установить фокусировку камеры с устройства iOS на бесконечность?

Я создаю приложение, которое блокирует фокус камеры для целей видеозаписи. Я хочу заблокировать фокус до бесконечности, не заставляя пользователя вручную настраивать фокус. Это возможно? Спасибо!

4b9b3361

Ответ 1

Это способ отключить фокус, он блокирует его все время:

// Find a suitable capture device
    AVCaptureDevice *cameraDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

    // SETUP FOCUS MODE
    if ([cameraDevice lockForConfiguration:nil]) {

        [cameraDevice setFocusMode:AVCaptureFocusModeLocked];

        [cameraDevice unlockForConfiguration];
    }
    else{
        NSLog(@"error while configuring focusMode");
    }

Что значит "блокировать фокус до бесконечности"?

Ответ 2

К сожалению, нет. Вы можете установить камеру в режим блокировки фокуса, как сказал Артем; в режиме автофокусировки (фокусировка, затем блокировка) или непрерывный режим автофокусировки, но вы не можете дать камере определенное расстояние для фокусировки.

Лучшее, что я смог придумать (для контроля экспозиции и баланса белого, которые так же ограничены) состоит в том, чтобы пользователь указывал камеру на подходящую сцену (в вашем случае, что-то далеко) и он/она нажимает кнопку блокировки.

Подробности об API-интерфейсе устройства захвата, например: https://developer.apple.com/library/mac/#documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html

Ответ 3

AVCaptureDevice имеет функцию setFocusModeLockedWithLensPosition: completeHandler:

Вы можете использовать его для установки 1.0 для достижения расстояния "бесконечности"

    func focusTo(value : Float) {
      if let device = captureDevice {
      if(device.lockForConfiguration(nil)) {
         device.setFocusModeLockedWithLensPosition(value, completionHandler: { (time) -> Void in
            //
        })
        device.unlockForConfiguration()
      }
    }

Обновление: Согласно документации Apple 1.0 не представляет фокус на бесконечности.