Android平台二维码之生成,扫描 & 识别

1.二维码的前世今生

“二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化点。 [1]”

上面是百度百科的解释。既然有二维码,那么肯定有一维码。

一维码。最为常见的就是食品 & 书本后面的条码。

条码起源与20世纪40年代,后来在1970年 UPC码发明,并开始广泛应用与食品包装。

具体的介绍可以看百度百科 一维码。

其实二维码与一维码本质上是类似的,就跟一维数组和二维数组一样。


2.二维码的java支持库

为了让java或者说android方便继承条码的功能,google就开发了一个zxing的库:

https://github.com/zxing/zxing

3.生成二维码


Android平台二维码之生成,扫描 & 识别_第1张图片
1/2


Android平台二维码之生成,扫描 & 识别_第2张图片
2/2

zxing 支持很多条码格式:我们这里使用QR_CODE码。也就是我们常见的微信里面的二维码。

我们先来分析下这段代码:

MultiFormatWriter writer =newMultiFormatWriter();


Android平台二维码之生成,扫描 & 识别_第3张图片
1/2


Android平台二维码之生成,扫描 & 识别_第4张图片
2/2

这是官方最新支持的格式,具体看引入的jar里面支持的格式。

对与bitmatrix的结果,通过摸个算法,设置每个点白色,或者黑色。

最后创建一张二维码的图片。

4.识别二维码


Android平台二维码之生成,扫描 & 识别_第5张图片
1/2


Android平台二维码之生成,扫描 & 识别_第6张图片
2/2

过程也是很简单,使用MultiFormatReader来分析图片,这里不需要缺人图片的条码格式。

如果分析下源码,就是依次使用每种格式的reader来分析,直到找到合适的为止。

当然回了能够把Bitmap转化成Bitmatrix,然后在分析。


Android平台二维码之生成,扫描 & 识别_第7张图片
1/3


Android平台二维码之生成,扫描 & 识别_第8张图片
2/3


Android平台二维码之生成,扫描 & 识别_第9张图片
3/3

5.扫描二维码

扫描二维码,其实比上面只多了一步,就是把camera获取的东西直接转换,然后进行识别。


Android平台二维码之生成,扫描 & 识别_第10张图片

首先把camera预览的数据放入previewCallback中。


Android平台二维码之生成,扫描 & 识别_第11张图片

可以看到,预览的数据data,回传递过来,然后handler的方式传递出去。

接收data的地方:


Android平台二维码之生成,扫描 & 识别_第12张图片

然后是decode data


Android平台二维码之生成,扫描 & 识别_第13张图片
1/2


Android平台二维码之生成,扫描 & 识别_第14张图片
2/2

参考:

http://www.cnblogs.com/weixing/archive/2013/08/28/3287120.html

你可能感兴趣的:(Android平台二维码之生成,扫描 & 识别)