ios - 适用于 iOS 9.0 的 AVCaptureDevice DiscoverySession

标签 ios swift avfoundation avcapturesession

我正在开发 QR 和矩阵码阅读器应用程序。我正在使用 AvCaptureDevice.DiscoverySession 获取 AVCaptureDeviceInput。我的问题是它仅在 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
}

最佳答案

如果你想获取AVCaptureDevice列表,你可以使用

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

iOS 9

关于ios - 适用于 iOS 9.0 的 AVCaptureDevice DiscoverySession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52145387/

相关文章:

swift - 如何在歌曲重复时无滞后/延迟地循环背景音乐(无缝)

swift - 我可以从该协议(protocol)中获取符合该协议(protocol)的类型的名称吗?

swift - 遵守协议(protocol)(作为协议(protocol))

iOS AVCaptureVideoDataOutput 占用太多内存

iOS 13 语音控制 UIScrollView

ios - 什么时候可以使用@IBOutlets?

xcode - 无法在Xcode中获得许可

ios - 恢复购买工作,但它不断循环

ios - SpriteKit |连击爆破虫

javascript - 从网站 booking.com 获取用户信息