最近的项目中使用到自己编译的zBar进行条码识别,在自己的手机上一直都没有问题,但是前面有一部小米MAX2s中出现了手机放着不动扫描空白处,尽然识别出了条码的bug.因为这个bug在别的手机上还没有遇到过,而且也比较诡异,未做处理,但是最近反馈说這样的手机也有一些包括小米8.必须要进行处理了.
在摄像头重复的回调中,把图像数据交给zBar去识别,zBar返回识别到的条码list,如果list不空,则触发我的处理逻辑,正常情况下扫描空白的桌面,摄像头的回调图像也是空白的,传入zBar也肯定不会识别出条码信息了,但是却偏偏识别出了条码,匪夷所思了,zBar的底层识别是用c++实现的,虽然是自己编译的zBar也有源码在手,问题是看不懂啊.搜索能找到少量的类似问题,但是都没有解决方法.
只是copy官方demo,没有做更多的配置
scanner.setConfig(0, Config.X_DENSITY, 3)
scanner.setConfig(0, Config.Y_DENSITY, 3)
加上了条码识别的一些配置
scanner.setConfig(0, Config.X_DENSITY, 3)
scanner.setConfig(0, Config.Y_DENSITY, 3)
scanner.setConfig(Symbol.NONE, Config.ENABLE, 0)
scanner.setConfig(Symbol.CODE128, Config.ENABLE, 1)
scanner.setConfig(Symbol.CODE39, Config.ENABLE, 1)
scanner.setConfig(Symbol.EAN13, Config.ENABLE, 1)
scanner.setConfig(Symbol.EAN8, Config.ENABLE, 1)
scanner.setConfig(Symbol.UPCA, Config.ENABLE, 1)
scanner.setConfig(Symbol.UPCE, Config.ENABLE, 1)
scanner.setConfig(Symbol.UPCE, Config.ENABLE, 1)
感谢zBarLibary开源库,如果有扫描需求的话可以直接使用,因为我没有二维码需求,就保持现在的不变了.