最近再一次做到了扫码项目,扫码出现的扫码性能问题再次摆上了案头,经过自己研究并与同行沟通后得出了目前自己能做到的对扫码性能优化的处理。
1、精简解码码制
目前 github 上 Zxing 支持的码制
国内常用的有二维码 QR Code 以及各种条码
在这里具体做法就是在支持解码类与解码库把可解码裁剪为只剩下自己项目需要的码制。(重中之重,个人经验,这个对性能提高最有效)
2、扩大扫码截图大小
在使用中发现,Zxing 提供的源码与网上很多 Demo 都有这么个问题,扫码的时候把二维码完全填充的扫描框里边的时候是解析不出来了,反而把扫码距离放远立马就能扫描到信息了。分析是扫描截图,解析图片时二维码过大导致。尝试增大截图大小之后性能显著提升。在这里结合之后沟通得出的经验,这个截图增大在宽高100px。具体的结合自己的实际情况调整。
3、缩短自动聚焦的间隔时间
Zxing 默认的聚焦间隔时间是2000毫秒。扫码是在每一次调用相机聚焦完成后触发回调取图解析的。在这里缩短聚焦时间会提高解析频率,扫码性能自然就提升了。当然也有不好的地方,提高了聚焦的频率,对手机电量的消耗自然增加了。我这里是把聚焦间隔修改成了1000毫秒,这个依据手机硬件的性能修改,不同厂家的手机对相机聚焦的处理是不同的,如果你设置的这个聚焦间隔时间小于了手机厂家默认设计的相机聚焦间隔就会导致程序的崩溃。这个设置请慎重使用。
其他的方案据说还有对解码算法的优化,限于技术水平与时间,暂时就没去研究算法的优化,如果有人有对算法优化比较好的案例。欢迎分享学习。