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