简要说明
android有四款扫描器,Zxing 、Zbar ,Barcode4J、OkapiBarcode ,前二者应用较广泛。
zxing项目是谷歌推出的用来识别多种格式条形码的开源项目,项目地址为
https://github.com/zxing/zxing,zxing有多个人在维护,覆盖主流编程语言,也是目前还在维护的较受欢迎的二维码扫描开源项目之一。zbar则是主要用C来写的,速度极快,推出了iPhone的SDK和Android的相关调用方法(JNI),但这个项目已经有几年不维护了,目前并没有维护下去的意思,见https://github.com/ZBar/ZBar。
运行Zxing
打开zxing的github页面你会发现项目的目录结构比较复杂,要运行官方的demo只需要core、android、android-core三个模块即可,其中core、android-core为核心,android为官方提供的demo,我们只需把android包作为主模块,并且依赖core和android-core模块即可。具体可参考以下这篇文章:
Google ZXing系列讲解(一)——导入AS
切换竖屏导致预览拉伸变形
运行了官方demo后你会发现,demo是以横屏的方式扫描的,而市场上绝大部分应用都是竖屏扫描的,于是我们来到manifest中修改了屏幕方向,发现确实是竖屏了,框也从长方形变成正方形了,但是画面中的图像竟被压窄了,这可不行,我们得处理,处理方式可以参考以下这篇文章:
完美解决Android使用Zxing扫描二维码改成竖屏后,后面的预览画面出现了拉伸,扭曲的情况
简化代码
这下子终于可以用了,但是这里的代码很多是我们用不到的,所以我们就要精简代码,这可麻烦了,简化代码不止要花时间看懂代码,还有可能因为修改代码而带来bug,所以网上如果有别人精简好的代码,且star比较多,还是建议用别人的吧,当然愿意折腾的话也可以自己去探索一下。
相册扫码
一般扫码都会提供从相册中选取图片的功能,但是zxing的demo中并没有,而且文档也没看到,好在网上有很多相关的文章,如:
Zxing图片识别 从相册选二维码图片解析总结
相关库推荐
官方:zxing
无相册扫描功能:barcodescanner、zxing-android-embedded
有相册扫描功能:yuzhiqiang1993 /zxing、maning0303 /MNZXingCode(个人测试,前者识别速度较快)
优化
在选择库的时候你会发现,不同的库的识别速度是有比较大的差异的,这涉及到扫描精度等性能问题,有兴趣的可以看下以下这篇文章:zxing扫描二维码和识别图片二维码及其优化策略