Android之二维码zxing

zxing项目地址:https://github.com/zxing/zxing
API文档:https://zxing.github.io/zxing/apidocs/

在zxing中解码大致流程为:
1:获取摄像头byte[] data
2:对数据进行解析
在zxing客户端源码中
PreviewCallback 摄像头回调 data就是出自这里
PlanarYUVLuminanceSource 继承自LuminanceSource不同的数据源 YUV RGB RGBLuminanceSource
AutoFocusCallback 自动对焦。不能自动对焦的手机zxing就不能发威了
CameraManager 摄像头管理类。打开,关闭
DecodeThread 线程管理主要利用到了CountDownLatch
DecodeHandler 数据传输中枢。我理解DecodeThread控制线程,DecodeHandler发送数据
DecodeFormatManager 这个配置解码格式。一维码,二维码等
CaptureActivityHandler 这个是解码与avtivity中介。解码成功,失败都用她回调
ViewfinderView 我们看到的扫描框,搞花样就从她入手

DecodeHandler是二维码解析的核心类,其成员变量MultiFormatReader是一个通用的解析器,可解析条形码、二维码等。MultiFormatReader也可替换成QRCodeReader、QRCodeMultiReader等其他解析器。构造方法中的Map<DecodeHintType, Object>是解析参数列表。

实现多个二维码解析

将DecodeHandler中的成员变量MultiFormatReader替换成QRCodeMultiReader。将void decode(byte[] data, int width, int height)方法进行如下修改:

priva
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要使用zxingAndroid中生成和扫描二维码,您需要按照以下步骤操作: 1. 添加依赖项 将以下依赖项添加到您的项目中的build.gradle文件中: ``` implementation 'com.google.zxing:core:3.4.0' implementation 'com.journeyapps:zxing-android-embedded:3.6.0' ``` 2. 生成二维码 使用以下代码在应用程序中生成二维码: ``` String data = "Hello, World!"; int width = 500; int height = 500; BitMatrix bitMatrix = new MultiFormatWriter().encode(data, BarcodeFormat.QR_CODE, width, height); BarcodeEncoder barcodeEncoder = new BarcodeEncoder(); Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix); ``` 3. 扫描二维码 要在Android应用程序中扫描二维码,您需要使用zxing提供的IntentIntegrator类。使用以下代码启动扫描器: ``` IntentIntegrator integrator = new IntentIntegrator(this); integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES); integrator.setPrompt("Scan a QR code"); integrator.setCameraId(0); integrator.setBeepEnabled(false); integrator.setBarcodeImageEnabled(true); integrator.initiateScan(); ``` 然后在onActivityResult()方法中处理扫描结果: ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if (result != null) { if (result.getContents() == null) { Log.d(TAG, "Cancelled scan"); } else { Log.d(TAG, "Scanned: " + result.getContents()); } } else { super.onActivityResult(requestCode, resultCode, data); } } ``` 这就是使用zxingAndroid中生成和扫描二维码的步骤。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值