使用 ZBarSDK 时 iPhone 相机失去自动对焦

Posted

技术标签:

【中文标题】使用 ZBarSDK 时 iPhone 相机失去自动对焦【英文标题】:iPhone camera loses auto-focus when using ZBarSDK 【发布时间】:2011-12-28 16:17:20 【问题描述】:

我正在开发一个应用程序,如果用户想要扫描条形码或为某物拍照,则可以选择该应用程序。 为了拍照,我照常使用UIImagePickerController。 对于扫描条码,我使用的是 ZbarSDK 1.2 ZBarReaderViewController

拍照时,一切都很完美。 扫描条码时: 如果您拍照之前启动应用程序并扫描条形码,它也可以完美运行。

但是你是不是拍了张照片,然后回去尝试扫描条码,相机失去自动对焦,无法扫描条码。

总结一下: 开始 -> 扫描 -> 自动对焦工作 开始 -> 拍照 -> 返回 -> 扫描 -> 自动对焦不起作用

这是我初始化条形码扫描仪的方式:

-(ZBarReaderViewController *) barcodeScanner

    if (nil == _barcodeScanner)
    
        _barcodeScanner = [ZBarReaderViewController new];
        _barcodeScanner.readerDelegate = self;
        _barcodeScanner.cameraMode = ZBarReaderControllerCameraModeSampling;
        _barcodeScanner.sourceType = UIImagePickerControllerSourceTypeCamera;
    
    return _barcodeScanner;

有什么想法吗?

【问题讨论】:

【参考方案1】:

在加载 ZBarReaderViewController 之前确保释放 UIImagePickerController,在加载 UIImagePickerController 之前确保释放 ZBarReaderViewController。

我花了好几天才弄明白为什么我一直失去专注的能力,结果发现我没有释放东西。对于其他偶然发现这个答案的人......你一次只能有 1 个 AVCaptureSession 否则事情会变得很糟糕,你会失去专注的能力。 ZBarReaderViewController 使用 AVCaptureSession,因此请确保在初始化新的 AVCaptureSession 之前释放它。

【讨论】:

我会试试看...我已经接受了我不会得到这个答案的事实...【参考方案2】:

我们在使用 Zbar 时遇到了同样的问题,我们通过在关闭模型视图之前延迟 2 秒来解决它。

【讨论】:

【参考方案3】:

我会更深入地研究您的拍照实现。尝试在完成拍照后检查您是否正确关闭了资源。我不认为 zBar 的实现与它有任何关系......

【讨论】:

重点是 - 我没有“拍照”的实现......我只是在初始化 UIImagePickerController,以模态方式呈现它并在拍照时获取回调。我自己没有做任何花哨的事情。

以上是关于使用 ZBarSDK 时 iPhone 相机失去自动对焦的主要内容,如果未能解决你的问题,请参考以下文章

需要访问 iPhone 使用的默认相机快门声音

如何使用 AssetsLibrary.framework 在 iphone sdk 中打开自定义相机?

iPhone上的自定义相机工具栏

将相机应用旋转复制到横向 IOS 6 iPhone

为自定义相机转动闪光灯时前置相机崩溃?

使用 ZBar SDK 的 iPhone 应用程序的验证错误