繁体   English   中英

无法打开iOS相机

[英]Not able to Open a Camera for iOS

我正在尝试为应用程序创建条形码阅读器功能。 为此,我无法获得任何相机设备。

我正在使用AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position:. back)来获取设备列表。

我想从上面的列表中获取第一个设备

但它不会返回任何相机。

我还在info.plist添加了一个隐私 - 相机使用说明

       func viewDidLoad() {

            let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaType.video, position:. back)

            guard let captureDevice = deviceDiscoverySession.devices.first else{
            print("Failed to get the camera device")
            return
            }

       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)

            captureMetadataOutput.metadataObjectTypes = [AVMetadataObject.ObjectType.qr]



            //Initialize the video preview layer and add it as a subLayer to the viewPreview view

            videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession!)

            videoPreviewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill

            videoPreviewLayer?.frame = view.layer.bounds

            view.layer.addSublayer(videoPreviewLayer!)



            //Start video capture.

            captureSession?.startRunning()

        } catch {

            // if any error occurs, print it out and don't continue any more

            print(error)

            return

        }
}

我希望它可以启动相机; 但是,它反过来给我以下错误:

2019-05-05 16:17:46.609442-0500 BarCode [964:302791] [MC] systemgroup.com.apple.configurationprofiles路径的系统组容器是/private/var/containers/Shared/SystemGroup/systemgroup.com.apple .configurationprofiles

2019-05-05 16:17:46.609962-0500 BarCode [964:302791] [MC]从公共有效用户设置中读取。

无法获得相机设备。

它可能就像错误提到的那样。 没有任何.builtInDualCamera选项可用于该设备。

您可以尝试的普通相机类型

let deviceDiscoverySession = AVCaptureDevice.DiscoverySession(deviceTypes: [.builtInWideAngleCamera], mediaType: AVMediaType.video, position: .back)

如果你确实需要.builtInDualCamera ,你可以按照Apple文档建议的那样执行if...else检查后备计划。

构建相机应用程序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM