我试图更新cordova应用程序以阅读CODABAR格式条形码。
iOS上使用的条形码扫描插件依赖于AV Foundation框架来设置 AVCaptureSession来 激活相机并截取图像帧。
大多数cordova插件&围绕网络的iOS教程使用这种方法,并附上一个 AVCaptureMetadataOutput实例,用于指定我们感兴趣的条形码格式。
例如
outputItems = [[AVCaptureMetadataOutput alloc] init];
[outputItems setMetadataObjectsDelegate:self queue:dispatch_get_main_queue()];
[captureSession addOutput:outputItems];
outputItems.metadataObjectTypes = [outputItems availableMetadataObjectTypes];
不幸的是,CODABAR不是supported formats之一。
插件发送后,会使用ZXing处理图片。 ZXing支持我想要的所有格式,但由于AVCaptureMetadataOutput不允许你 要指定CODABAR,我的插件永远不会收到图像。
是否可以使用AVCaptureSession处理相机上的帧? 我是否错过了强制帧被发送的方法,尽管" unblessed"条形码格式?
答案 0 :(得分:0)
阿。发现它我认为。
代码库仍然引用了zxing调用,但在没有删除旧代码的情况下使用它进行了交换,这导致我走错了路。
在改变之前,它正在使用AVCaptureVideoDataOutput来处理帧本身。
然后改为使用AVCaptureMetadataOutput,将图像处理委托给AV Foundation而不是zxing。
看起来想添加codabar支持,我可能需要改变这一点,因为AV基金会不会做同一性的。
更新:现在大概一岁了,但为了整理这个老问题,我继续使用上面建议的解决方案,因为在iOS上似乎没有任何其他方式。这是comment on the plugin's github issue的一部分:
事实证明:
这个插件的旧版本在iOS中使用了ZXing c ++端口的(古代)快照。那个图书馆当时并不支持Codabar。
在某些时候,iOS版本改为使用iOS AV Foundation框架,将条形码解码委托给AVCaptureMetadataOutput。这个框架doesn't support codabar either。由于在旧的c ++ zxing方法中找到了memory leaks,这一切换是必要的,当iOS 10登陆所有人时发现。
我尝试将此插件与更新的Objective C port of ZXing集成。这确实支持codabar,以及此插件的iOS版本中目前缺少的一些额外格式。
我的尝试就在这里: https://github.com/otherchirps/phonegap-plugin-barcodescanner
我的iOS项目现在使用此版本的插件扫描codabar条形码。
这是基于早先在此处发现的相同努力: https://github.com/dually8/BarcodeScanner