ios 使用AVCaptureDeviceTypeBuiltInTripleCamera时,为条形码扫描选择合适的摄像头

xcitsw88  于 2022-11-19  发布在  iOS
关注(0)|答案(1)|浏览(193)

我的iOS应用程序中有一些条形码扫描码已经很多年了。最近,用户开始抱怨它在iPhone 13 Pro上不起作用。
在调查过程中,我似乎应该使用内置的三重摄像头(如果有的话)。这样做 * 确实 * 修复了iPhone 13 Pro的摄像头,但随后又破坏了iPhone 12 Pro的摄像头,iPhone 12 Pro似乎与之前的代码配合得很好。
你应该如何为所有设备选择一个合适的相机呢?在我看来很奇怪,苹果突然让使用这个以前工作的代码变得如此困难。
这是我当前的代码。“回退”部分是代码多年来一直使用的部分。

_session = [[AVCaptureSession alloc] init];
     // Must use macro camera for barcode scanning on newer devices, otherwise the image is blurry
    if (@available(iOS 13.0, *)) {
        AVCaptureDeviceDiscoverySession * discoverySession =
        [AVCaptureDeviceDiscoverySession discoverySessionWithDeviceTypes:@[AVCaptureDeviceTypeBuiltInTripleCamera]
                                                               mediaType:AVMediaTypeVideo
                                                                position:AVCaptureDevicePositionBack];
        if (discoverySession.devices.count == 0) {
            // no BuiltInTripleCamera
            _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        } else {
            _device = discoverySession.devices.firstObject;
        }
    } else {
        // Fallback on earlier versions
        _device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    }
jq6vz3qz

jq6vz3qz1#

谢天谢地,在reddit的帮助下,我能够弄清楚解决方案只是简单地替换

AVCaptureDeviceTypeBuiltInTripleCamera

AVCaptureDeviceTypeBuiltInWideAngleCamera

相关问题