【问题标题】:Choosing suitable camera for barcode scanning when using AVCaptureDeviceTypeBuiltInTripleCamera使用 AVCaptureDeviceTypeBuiltInTripleCamera 时选择合适的相机进行条码扫描
【发布时间】:2022-11-13 07:11:58
【问题描述】:

多年来,我的 iOS 应用程序中有一些条码扫描代码。最近,用户开始抱怨它不适用于 iPhone 13 Pro。

在调查期间,我似乎应该使用内置的三合一相机(如果有的话)。这样做做过为 iPhone 13 Pro 修复它,但随后为 iPhone 12 Pro 破坏它,这似乎与以前的代码一起工作正常。

您应该如何为所有设备选择合适的相机?我觉得很奇怪,Apple 突然让使用这个以前工作的代码变得如此困难。

这是我当前的代码。 “后备”部分是代码多年来使用的部分。

     _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];
    }

【问题讨论】:

  • 我想我也有类似的问题——iPhone 14 Pro 的“最小距离”已经从大约 3 英寸(对于 iPh 6 和 8)和 3.75 英寸(对于 iPh 13 Pro)变成了大约 5.75 英寸。我还没有更改任何代码。
  • 希望有人有一个通用的解决方案!

标签: ios objective-c iphone barcode-scanner


【解决方案1】:

谢天谢地,在 reddit 的帮助下,我发现解决方案只是替换

AVCaptureDeviceTypeBuiltInTripleCamera

AVCaptureDeviceTypeBuiltInWideAngleCamera

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2021-04-05
    • 2012-07-17
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    相关资源
    最近更新 更多