AVCaptureDevice DiscoverySession для iOS 9.0 - PullRequest
0 голосов
/ 03 сентября 2018

Я занимаюсь разработкой приложения для считывания QR и Matrix Code. Я получаю AVCaptureDeviceInput с AvCaptureDevice.DiscoverySession. Моя проблема в том, что он доступен только после iOS 10.0. Как я могу получить его для резервных версий?

// Get the back-facing camera for capturing videos
if #available(iOS 10.0, *) {
    let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back)
    guard let captureDevice = deviceDiscoverySession.devices.first else {
        print("Failed to get the camera device")
        return
    }

} else {
    // Fallback on earlier versions
}
do {
    // Get an instance of the AVCaptureDeviceInput class using the previous device object.
    let input = try AVCaptureDeviceInput(device: captureDevice)

    // Set the input device on the capture session.
    captureSession.addInput(input)

    // Initialize a AVCaptureMetadataOutput object and set it as the output device to the capture session.
    let captureMetadataOutput = AVCaptureMetadataOutput()
    captureSession.addOutput(captureMetadataOutput)

    // Set delegate and use the default dispatch queue to execute the call back
    captureMetadataOutput.setMetadataObjectsDelegate(self, queue: DispatchQueue.main)

    //TODO: Decide the data types!
    captureMetadataOutput.metadataObjectTypes = [AVMetadataObject.ObjectType.dataMatrix]
    //captureMetadataOutput.metadataObjectTypes = [AVMetadataObject.ObjectType.qr]

} catch {
    // If any error occurs, simply print it out and don't continue any more.
    print(error)
    return
}

1 Ответ

0 голосов
/ 13 декабря 2018

Если вы хотите получить список AVCaptureDevice, вы можете использовать

let cameras = AVCaptureDevice.devices(for: AVMediaType.video)

в iOS 9

...