Julian Steenbakker
Committed by GitHub

Merge pull request #500 from jorgenpt/tweak-ios-camera-focus

feat(iOS): Tweak iOS camera focus settings
## NEXT
Improvements:
* [iOS] No longer automatically focus on faces
## 3.0.0
This big release contains all improvements from the beta releases.
In addition to that, this release contains:
... ...
... ... @@ -124,12 +124,8 @@ public class MobileScanner: NSObject, AVCaptureVideoDataOutputSampleBufferDelega
// Open the camera device
if #available(iOS 13.0, *) {
device = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInTripleCamera, .builtInDualWideCamera, .builtInDualCamera, .builtInWideAngleCamera], mediaType: .video, position: cameraPosition).devices.first
} else if #available(iOS 10.2, *) {
device = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera], mediaType: .video, position: cameraPosition).devices.first
} else if #available(iOS 10.0, *) {
device = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: .video, position: cameraPosition).devices.first
} else {
device = AVCaptureDevice.devices(for: .video).filter({$0.position == cameraPosition}).first
device = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera, .builtInWideAngleCamera], mediaType: .video, position: cameraPosition).devices.first
}
if (device == nil) {
... ... @@ -137,6 +133,17 @@ public class MobileScanner: NSObject, AVCaptureVideoDataOutputSampleBufferDelega
}
device.addObserver(self, forKeyPath: #keyPath(AVCaptureDevice.torchMode), options: .new, context: nil)
do {
try device.lockForConfiguration()
if device.isFocusModeSupported(focusMode: .continuousAutoFocus) {
device.focusMode = .continuousAutoFocus
}
if #available(iOS 15.4, *) {
device.automaticallyAdjustsFaceDrivenAutoFocusEnabled = false
}
device.unlockForConfiguration()
} catch {}
captureSession.beginConfiguration()
// Add device input
... ...