我有一个应用程序,应该能够在几分钟内扫描大量的QR码。所以它必须是被动的。我使用ZBarSDK,我很满意。
当代理人使用processScannedData:(NSString *)scannedData
收到数据时,我会显示一条必须手动解除的消息。为了快速,我通过与 AVCaptureDevice 交互来锁定焦距,假设下一个QR码将以相同的距离呈现。
除了在一种情况下,这个系统运行良好:当我在扫描后显示我的信息时,我不会停止相机以避免失去我刚刚锁定的焦点。如果您在解除消息之前提供下面的下一个QR代码,我的processScannedData:(NSString *)scannedData
委托方法将捕获它并按预期忽略数据。唯一的问题是,如果您在此时关闭该消息(将相机保持在QR码之上),将无法接收数据但是已经触发了委托方法,您将被迫在另一个处查找几秒钟然后回到你的二维码。
所以这是我的问题:在我明确告诉他这样做之前,是否可以告诉ZBar我不希望他解雇委托方法?是否可以在不停止相机的情况下停止处理数据?
感谢您的帮助
答案 0 :(得分:7)
好的,所以我找到了解决问题的方法。
我认为在相机工作时无法修改ZBarSDK配置,但这是一个错误。
这是必须使用的工作代码:
- (void)disableQRCodeDetection
{
// disabling all symbols detection for performance reasons
[self.scanner setSymbology: 0
config: ZBAR_CFG_ENABLE
to: 0];
}
- (void)enableQRCodeDetection
{
// We enable QR Code detection
[self.scanner setSymbology: ZBAR_QRCODE
config: ZBAR_CFG_ENABLE
to: 1];
}
这非常棒,您可以在相机工作时调整您想要检测的代码类型!