您的位置:首页 > 其它

二维码的扫描以及生成

2016-08-04 16:22 190 查看
*最早我们用来生成二维码的第三方是ZBer,日本人开发的 但识别不好,容易出现乱码而且非开源。

现在我们主流用的是ZXing 它是由谷歌公司开发的,用于二维码的生成和扫描 ZXing的包我们可以在gethub上面下载 因为直接下载配置文件特别麻烦,我们开发不需要那么多东西,所以直接在网上找一个简化版的ZXing的Demo使用就可以了*

但是在我们导入的时候会有点问题 因为我们需要把这个Demo变成library 才能够用我们自己的项目进行依赖操作 把它变成library后switch就不能使用了 原来的代码会报错 所以我们需要把它变成if else语句

下面是对ZXing源码的分析::

ZXing有两个最主要的类

CaptureActivity和EncodingHandler



一个是用来扫描二维码的 另一个是用来生成二维码的

里面还有三个package:camera decoding view

camera 里面的一些类主要就是对相机参数的设置

decoding主要负责解码编码

view 里面就是两个控件

CaptureActivity主要负责扫描 它自定义了一个相机管理器 并进行了初始化

我们在使用扫描二维码的时候扫描后肯定需要返回二维码里的内容或者根据里面的意图来做一些操作 这个就在 onActivityResult这个方法里面 大致过程就跟bundle传值差不多 扫描后结束相机 然后把扫描到的结果给返回到当前的Activity中显示



EncodingHandler 主要负责生成二维码 这个类主要是给我们返回一张图片

二维码一共有两种颜色 一种颜色是0一种颜色是1

二维码的生成结构实际就是把字符串变为0和1的形态然后他们分别表示不同颜色 最后组成一个图片

二维码的扫描跟二维码的生成刚好相反 扫描是把两种颜色翻译成0和1 然后再转换成字符串信息给用户

生成二维码的时候是使用for循环把二维码图片画出来的

Bitmap bitmap=Bitmap.craeteBitmap(width,height,Bitmap.Config.ARGB_8888)

bitmap.setPixels(pixels,0,width,0,0,width,height);

return bitmap

因为height==width 所以图片是正方形的

这一段逻辑代码实际上就是产生了一张黑白相间的正方形图片 只不过是按照一定规律来做的以方便电脑把它解析得到正确的字符串信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: