ZXing拍码后区分扫描到的是一维码、二维码、其他码,android音视频面试

ZXing拍码后区分扫描到的是一维码、二维码、其他码,android音视频面试,第1张

ZXing拍码后区分扫描到的是一维码、二维码、其他码,android音视频面试

该类中主要就是把一些常用的条码格式给添加到Vector集合里面,其中有一维码、二维码等。

最后一个DATA_MATRIX这个也属于是一种二维码。

**2.**上面的修改完了一会,然后是DecodeThread,这个是解码类

这里不需要我们做什么 *** 作,只要知道这里是如何解码的就行了,关键的地方就是这里:

if (decodeFormats == null || decodeFormats.isEmpty()) {

decodeFormats = new Vector();

decodeFormats.addAll(DecodeFormatManager.ONE_D_FORMATS); // 一维码

decodeFormats.addAll(DecodeFormatManager.QR_CODE_FORMATS); // 二维码

decodeFormats.addAll(DecodeFormatManager.DATA_MATRIX_FORMATS);

}

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

**3.**关键的地方来了,CaptureActivity,扫描后返回信息的类。

Zxing源码相信大家都能下到,也知道扫描后返回的值,里面有一个public void handleDecode(Result result, Bitmap barcode);方法,

返回的值就是在这里:

// 扫描后的结果  和  编码

Log.e(“编码: ------>”,result.getBarcodeFormat().toString()+"   数据:"+result.getText());

关键是这一句话:

result.getBarcodeFormat().toString()  返回的就是编码格式;

result.getText();  返回的才是扫描的值。

所以,我们主需要判断之前的编码管理类里的向量数组是否包含这个字段就OK了,迭代:

int size = DecodeFormatManager.ONE_
D_FORMATS.size(); //遍历一维码字符集

for (int i = 0; i < size; i++) {

Log.e(" 一维码编码格式 ------>",DecodeFormatManager.ONE_D_FORMATS.get(i)+"");

//此处根据 拍码后返回的编码格式 与 DecodeFormatManager类中的一维码 编码格式 进行对比

//相同则将标示字段赋值为1(即一维码) 否者将标示字段赋值为2(即二维码)

if(DecodeFormatManager.ONE_D_FORMATS.get(i).equals(mBarcodeFormat)){

ONE_D_FORMATS = 1;

}else {

QR_CODE_FORMATS = 2;

}

}

实现方式二:

在public void handleDecode(Result result, Bitmap barcode);方法中添加两个常量,自定义QR_CODE和 DATA_MATRIX两个常量码,然后当扫描返回时,通过result.getBarcodeFormat().toString()获得返回编码,再根据该返回码与自定义的编码去比对。然后定义个字符串或int变量作为标示,如下:

int CODE_TYPE = -1; //标示 (1一维码、 2、二维码 3、其他码)

final String QR_CODE = “QR_CODE”; //二维码

final String DATA_MATRIX = “DATA_MATRIX”; //其他码

//扫描获取的 编码 不为空

if(!TextUtils.isEmpty(result.getBarcodeFormat().toString())){

String mBarcodeFormat = result.getBarcodeFormat().toString(); //拍码后返回的编码格式

if(mBarcodeFormat.equals(DATA_MATRIX)){

CODE_TYPE = 3;

}else if(mBarcodeFormat.equals(QR_CODE)){

CODE_TYPE = 2;

}else {

CODE_TYPE = 1;

}

Log.e("—> (1一维码、 2、二维码 3、其他码) “,”"+CODE_TYPE);
.equals(DATA_MATRIX)){

CODE_TYPE = 3;

}else if(mBarcodeFormat.equals(QR_CODE)){

CODE_TYPE = 2;

}else {

CODE_TYPE = 1;

}

Log.e("—> (1一维码、 2、二维码 3、其他码) “,”"+CODE_TYPE);

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5719272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存