二维码相关知识点

简介: 1 关于如何在代码里区分条码扫描扫描到是是一维码还二维码 关键的三个类,CaptureActivity、DecodeThread、DecodeFormatManager1.首先让我们来看下Zxing的源码,里面有一个DecodeFormatManager编码管理类:该来原本的final类,因为需要用到该类里的一些参数,所以要把它变成普通类,但是不知道这样改变以后对原本的代码结构是否有影响,目前测试的时候没有遇到这个问题。

1 关于如何在代码里区分条码扫描扫描到是是一维码还二维码

关键的三个类,CaptureActivityDecodeThreadDecodeFormatManager
1.首先让我们来看下Zxing的源码,里面有一个DecodeFormatManager编码管理类:
该来原本的final类,因为需要用到该类里的一些参数,所以要把它变成普通类,但是不知道这样改变以后对原本的代码结构是否有影响,目前测试的时候没有遇到这个问题。还有就是有几个变量也是常量型的,这里要都要改成static类型的:
public static Vector<BarcodeFormat> PRODUCT_FORMATS;
public static Vector<BarcodeFormat> ONE_D_FORMATS;
public static Vector<BarcodeFormat> QR_CODE_FORMATS;
public static Vector<BarcodeFormat> DATA_MATRIX_FORMATS;
static {
  PRODUCT_FORMATS = new Vector<BarcodeFormat>(5);
  PRODUCT_FORMATS.add(BarcodeFormat.UPC_A);   // UPC标准码(通用商品)
  PRODUCT_FORMATS.add(BarcodeFormat.UPC_E);   // UPC缩短码(商品短码)
  PRODUCT_FORMATS.add(BarcodeFormat.EAN_13);  
  PRODUCT_FORMATS.add(BarcodeFormat.EAN_8);
  PRODUCT_FORMATS.add(BarcodeFormat.RSS14);
  ONE_D_FORMATS = new Vector<BarcodeFormat>(PRODUCT_FORMATS.size() + 4);
  ONE_D_FORMATS.addAll(PRODUCT_FORMATS);
  ONE_D_FORMATS.add(BarcodeFormat.CODE_39);
  ONE_D_FORMATS.add(BarcodeFormat.CODE_93);
  ONE_D_FORMATS.add(BarcodeFormat.CODE_128);
  ONE_D_FORMATS.add(BarcodeFormat.ITF);
  QR_CODE_FORMATS = new Vector<BarcodeFormat>(1);
  QR_CODE_FORMATS.add(BarcodeFormat.QR_CODE);
  DATA_MATRIX_FORMATS = new Vector<BarcodeFormat>(1);
  DATA_MATRIX_FORMATS.add(BarcodeFormat.DATA_MATRIX);
}


相信到这里大家应该都能看懂吧!不需要我多做解释了,这里主要就是把一些常用的条码格式给添加到一个向量里面,其中有一维码、二维码等。最后一个DATA_MATRIX这个也是一种二维码,但是具体用在什么方面,还真的不清楚。好了废话不多说了继续。

2.上面的修改完了一会,然后是DecodeThread,这个是解码类
这里不需要我们做什么操作,只要知道这里是如何解码的就行了,关键的地方就是这里:
if (decodeFormats == null || decodeFormats.isEmpty()) {
      decodeFormats = new Vector<BarcodeFormat>();
      decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS);  // 一维
      decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS);  // 二维码
      decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);
      
    }

这里把之前添加好的几个常量类,添加到解码的方法里面去,这样解码方法里面就有了所有的解码格式了,包括一维码和二维码。

3.关键的地方来了,CaptureActivity,扫描后返回信息的类。
Zxing源码相信大家都能下到,也知道扫描后返回的值,如果不知道的话,后面再好我好了。里面有一个handlerCode方法,返回的值就是在这里:
// 扫描后的结果
txtResult.setText(obj.getBarcodeFormat().toString() + ":"
   + obj.getText());


关键是这一句话:obj.getBarcodeFormat().toString()返回的就是编码格式;
obj.geText();返回的才是扫描的值。
所以,我们主需要判断之前的编码管理类里的向量数组是否包含这个字段就OK了,记得要迭代哦。

转自:http://www.eoeandroid.com/thread-239739-1-1.html

 

相关文章
|
6月前
CSDN博客如何添加微信公众号二维码
CSDN博客如何添加微信公众号二维码
98 0
|
2天前
|
小程序
手把手教程:设备二维码怎么生成?
本文将介绍如何生成设备二维码,帮助企业实现设备的高效管理。
|
2月前
|
自然语言处理 JavaScript 前端开发
自己整理的vue实现生成分享海报(含二维码),看着网上的没实现
自己整理的vue实现生成分享海报(含二维码),看着网上的没实现
37 0
|
4月前
|
安全
二维码知识科普:快速了解二维码的实现原理
二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。与一维条码不同的是,二维条码的长度和宽度都可以记载数据,而一维条码仅宽度记载数据。二维条码还有独特的“定位点”和“容错机制”,即使部分条码无法识别或条码受损,也能正确还原条码上的信息。
|
5月前
|
小程序 PHP 开发者
微信公众号开发(八)生成带参数二维码,以及将二维码下载至本地
微信的二维码真是个神奇的东西。在我们开发中,应用也是很多~ 用户扫描带场景值(参数)二维码时,可能推送以下两种事件:
73 1
|
10月前
|
开发者 C++
微信不够好看的地方,只能自己来动手了 | 公众号卡片美化
微信不够好看的地方,只能自己来动手了 | 公众号卡片美化
|
10月前
|
存储 移动开发 前端开发
电商系列 - 以二维码、海报等来讲讲分享的设计
在做电商平台时,相信都离不开各种推广,通过分享二维码、分享海报、商品链接、店铺链接等方式,来进行线上,或者线下的推广。线上诸如朋友圈、软文、广告、群组等方式、线下诸如店铺海报、地推海报、贴二维码等方式
116 0
|
安全 JavaScript
微信公众号-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)
页面设置一个隐藏的图片,宽高都是300像素,微信就会抓取这张图片做为分享图片
15462 0
二维码扫码功能流程图
二维码扫码功能流程图
216 0
二维码扫码功能流程图
|
搜索推荐
活码二维码(动态二维码)素材库管理教程
MyCms 活码二维码素材库目前内置七种类型内容,包含链接跳转、支付码、富文本、名片、音乐、视频和文件,覆盖目前主流的需求。
174 0
活码二维码(动态二维码)素材库管理教程