最近遇上了扫描条码的需求,在查找资料过程中不是那么地顺利,做个笔记,记录下这篇文章,前人栽树后人乘凉。
本篇文章Demo下载
ZXing介绍
说到二维码,大量的资料都会提到ZXing,具体见ZXing,这是一个用Java语言实现的1D/2D 条形码图像处理库。涉及专业知识不多做介绍,这篇文章只讲使用。
二维码生成
引入ZXing核心库:
创建二维码位图,写了一个工具类,可以直接使用:
使用到了ZXing核心功能的就是这句 QRCodeWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints), 传入内容、样式、宽高以及配置。
在配置EncodeHintType.CHARACTER_SET字符格式时,我们使用了"UTF-8",这是为了兼容中文,ZXing源码默认使用的是"ISO-8859-1",而"ISO-8859-1"本身是不支持中文的。
看一下使用效果:
生成带logo小图的二维码
很多时候见到的二维码中间都会带有一个logo小图,我们也来实现一下这样子的效果。
其实就是把两个bitmap绘制在一块,在原有的方法上补充即可,添加两个参数:
看一下使用效果:
二维码扫描
借助开源库 ZXing Android Embedded 实现二维码扫描。
ZXing Android Embedded 是用于Android的条形码扫描库,使用ZXing进行解码。
更多的使用可以下载源码工程跑下样例查看,包括设置前后摄像头、设置扫描超时时间等,该篇文章就只介绍最基本的二维码扫描使用。
引入库:
使用相机扫描二维码
跳转到扫描页面后会自动开始扫描,扫描到结果后会将结果返回,onActivityResult废弃之后,使用Activity Result API获取页面回传数据
这是使用默认的扫描页面,使用方法很简单,但是更多的情况下,我们都需要自定义扫描页面样式。
自定义CustomScannerActivity,启动扫描时设置CaptureActivity即可:
从相册中识别二维码图片
在样例中并没有找到从相册中识别二维码图片的方法,最终在issue中发现有提到同样的问题以及解答。
打开相册获取图片:
解析图片二维码:
上述方法从相册中识别二维码图片,发现存在识别失败的问题,尤其是商品条形码,使用相机扫描商品条形码是可以正常扫描识别出来的,但是将商品条形码拍照保存进相册,使用从相册中识别二维码图片方法,却出现识别失败的情况。
为此,又去查找了其他的资料,见下一篇文章Android基于MLKit实现条形码扫码的代码示例_Android_脚本之家 (jb51.net)
以上就是Andorid基于ZXing实现二维码生成与扫描的示例代码的详细内容,更多关于Andorid ZXing实现二维码的资料请关注脚本之家其它相关文章!