维码相关知识点
1 关于如何在代码⾥区分条码扫描扫描到是是⼀维码还⼆维码
关键的三个类,CaptureActivity、DecodeThread、DecodeFormatManager
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.BarcodeFormat().toString() + ":"
藤间斋小少爷 女友
+ Text());
关键是这⼀句话:BarcodeFormat().toString()返回的就是编码格式;
所以,我们主需要判断之前的编码管理类⾥的向量数组是否包含这个字段就OK了,记得要迭代哦。