2016-04-18 6 views
2

Я пытаюсь установить фокус с передней камерой.ios 9 AVCaptureDevice установка фокуса

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    let screenSize = cameraView.bounds.size 

    let frameSize:CGSize = view.frame.size 

    if let touchPoint = touches.first { 

     var location:CGPoint = touchPoint.locationInView(cameraView) 

     print("Tap Location : X: \(location.x), Y: \(location.y)") 

     if cameraManager.cameraDevice == .Front { 
      print("Front camera is used") 

      location.x = frameSize.width - location.x; 
     } 
     else { 
      print("Back camera is used") 
     } 

     let x = location.x/frameSize.width 
     let y = 1.0 - (location.x/frameSize.width) 

     let focusPoint = CGPoint(x: x, y: y) 

     print("POINT : X: \(x), Y: \(y)") 


     let captureDevice = (AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) as! [AVCaptureDevice]).filter{$0.position == .Front}.first 

     if let device = captureDevice { 
      do { 
       try device.lockForConfiguration() 

       let support:Bool = device.focusPointOfInterestSupported 

       if support { 

        print("focusPointOfInterestSupported: \(support)") 

        device.focusPointOfInterest = focusPoint 

        // device.focusMode = .ContinuousAutoFocus 
        device.focusMode = .AutoFocus 
        // device.focusMode = .Locked 

        device.unlockForConfiguration() 

        print("Focus point was set successfully") 
       } 
       else{ 
        print("focusPointOfInterestSupported is not supported: \(support)") 
       } 
      } 
      catch { 
       // just ignore 
       print("Focus point error") 
      } 
     } 
    } 
} 

Он работает на iphone6 ​​для камеры заднего вида. Но, когда я активирую переднюю камеру, она обмоталась. focusPointOfInterestSupported всегда возвращает false.

Как я могу решить эту проблему. Могу ли я установить фокусную точку программно?

Спасибо!

ответ

5

focusPointOfInterestSupported boolean указывает, что передняя камера этого устройства не поддерживает настройку фокуса таким образом. На самом деле, похоже, что камера FaceTime на iPhone 6 имеет фиксированный фокус. В разделе «Технические характеристики» камеры iPhone 6 «FaceTime» нет упоминания о «фокусе», но есть и в задней части камеры «iSight». Кроме того, попытка перефокусировать фронтальную камеру на размытом объекте рядом с объективом (при нажатии в приложении «Камера») позволяет регулировать экспозицию, а не фокус.

Источник: https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVCaptureDevice_Class/index.html#//apple_ref/occ/instp/AVCaptureDevice/focusPointOfInterestSupported

Источник: http://www.apple.com/iphone-6/specs/

+0

Спасибо за ответ. Ты прав. Передняя камера поддерживает только регулировку экспозиции. Знаете ли вы, как насчет масштабирования? Я не могу установить коэффициент масштабирования переднего фотоаппарата с помощью avfoundation. Но некоторые приложения, которые хранятся в магазине Apple, могут устанавливать масштабирование. – gkhanacer

+0

Ни передняя, ​​ни задняя камера iPhone не поддерживают оптический зум. Все «масштабирование», которое делают приложения, фактически просто обрезает изображение, чтобы оно выглядело увеличенным. Если AVFoundation не позволяет вам использовать свой «зум» на передней камере, это может быть потому, что оно имеет меньшее разрешение, чем задняя камера. Приложение Camera также не позволяет масштабировать переднюю камеру, как это происходит с задней камерой. –

Смежные вопросы