一个Android平台上更快更简单更精准的条形码及二维码解析框架。采用ZBar解析图像数据,兼容
Android4.0 (API14)
及以上版本。
CSDN可能更新不够及时,了解最新版本详见 GitHub项目地址
目录
示例demo
Demo下载 | 示例效果 |
---|---|
点此下载 或扫描下面二维码 |
功能介绍
本项目基于ZBar进行开发,分别对视图、相机、解码三个方面进行了高度封装,同时降低三者之间的耦合,增加可灵活配置性。
视图
- 自定义
AdjustTextureView
,继承自TextureView
,开放setImageFrameMatrix
接口,可根据自身尺寸、图像帧宽高及旋转角度对图像进行校正,解决预览画面变形等异常问题。 - 自定义
ScannerFrameView
,继承自View
,可通过xml属性或接口自定义扫描框、四个角及扫描线的尺寸、颜色、动画等,具体属性使用参考源码注解。 - 自定义
MaskRelativeLayout
&MaskConstraintLayout
,分别继承自RelativeLayout
&ConstraintLayout
,做为ScannerFrameView
的父容器,用于绘制扫描框外部阴影。
- 自定义
相机
- 兼容
android.hardware.camera2
及android.hardware.Camera
两版API。 - 子线程开启camera,防止阻塞主线程造成界面跳转卡顿。
- 采用单例模式,防止出现多个实例同时操作相机设备引发异常。
- 开放扫码框Rect设置接口,根据预览尺寸、图像帧尺寸、预览方向计算出扫码框在图像帧上的实际位置,以指定图像识别区域。
- 用
TextureReader
代替ImageReader
,采用openGL绘制图像纹理,主要解决预览掉帧严重的问题,实时输出YUV格式图像。
- 兼容
解码
- 支持指定图像区域识别。
- 开放条码类型配置接口,可任意指定需要识别的条码类型。
- 解码回调结果包含条码类型、条码精度,可配置脏数据过滤规则。
UML类图
集成方式
在module的build.gradle