Android 最好用的扫码框架 封装ZXing
之前项目中用到的扫码框架还是ZXing,嘻嘻 来到新公司之后 发现我们这个扫码框架是用的一个基于ZX ing封装的一个扫码框架 ,而且扫码的速度和准确率都比ZXing要强大的许多,因为要改其中的一个小功能 ,所以就研究了一下。QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
下面就让我们开始吧
首先给出原作者的git地址
https://github.com/bingoogolapple/BGAQRCode-Android
效果图如下(这个是原作者的哦):
下面开始上代码了 我只用的Zxing
1.gradle中添加:
dependencies {
implementation'cn.bingoogolapple:bga-qrcode-zxing:1.3.4'
}
这里我是用的最新的 因为用到了自定义的扫码格式
2.在布局文件中:
3.在Activity中使用
/**
* 延迟delay毫秒后开始识别
*/
mQRCodeView.startSpotDelay(800);
需要当前Activity实现QRCodeView.Delegate,ICaptureView;
implements QRCodeView.Delegate,ICaptureView;
这里面有两个回调方法 一个是扫描结果的回调 一个是否需要开启闪光灯
/** * 处理扫描结果 **@paramresult 摄像头扫码时只要回调了该方法 result 就一定有值,不会为 null。解析本地图片或 Bitmap 时 result 可能为 null*/
voidonScanQRCodeSuccess(Stringresult)
/** * 摄像头环境亮度发生变化 **@paramisDark 是否变暗*/
voidonCameraAmbientBrightnessChanged(booleanisDark);
/** * 处理打开相机出错*/
voidonScanQRCodeOpenCameraError()
自定义属性说明
属性名说明默认值
qrcv_topOffset 扫描框距离 toolbar 底部的距离90dp
qrcv_cornerSize 扫描框边角线的宽度3dp
qrcv_cornerLength 扫描框边角线的长度20dp
qrcv_cornerColor 扫描框边角线的颜色@android:color/white
qrcv_cornerDisplayType 扫描框边角线显示位置(相对于边框),默认值为中间center
qrcv_rectWidth 扫描框的宽度200dp
qrcv_barcodeRectHeight 条码扫样式描框的高度140dp
qrcv_maskColor 除去扫描框,其余部分阴影颜色#33FFFFFF
qrcv_scanLineSize 扫描线的宽度1dp
qrcv_scanLineColor 扫描线的颜色「扫描线和默认的扫描线图片的颜色」@android:color/white
qrcv_scanLineMargin 扫描线距离上下或者左右边框的间距0dp
qrcv_isShowDefaultScanLineDrawable 是否显示默认的图片扫描线「设置该属性后 qrcv_scanLineSize 将失效,可以通过 qrcv_scanLineColor 设置扫描线的颜色,避免让你公司的UI单独给你出特定颜色的扫描线图片」false
qrcv_customScanLineDrawable 扫描线的图片资源「默认的扫描线图片样式不能满足你的需求时使用,设置该属性后 qrcv_isShowDefaultScanLineDrawable、qrcv_scanLineSize、qrcv_scanLineColor 将失效」null
qrcv_borderSize 扫描边框的宽度1dp
qrcv_borderColor 扫描边框的颜色@android:color/white
qrcv_animTime 扫描线从顶部移动到底部的动画时间「单位为毫秒」1000
qrcv_isCenterVertical (已废弃,如果要垂直居中用 qrcv_verticalBias="0.5"来代替)扫描框是否垂直居中,该属性为true时会忽略 qrcv_topOffset 属性false
qrcv_verticalBias 扫描框中心点在屏幕垂直方向的比例,当设置此值时,会忽略 qrcv_topOffset 属性-1
qrcv_toolbarHeightToolbar 的高度,通过该属性来修正由 Toolbar 导致扫描框在垂直方向上的偏差0dp
qrcv_isBarcode 扫描框的样式是否为扫条形码样式false
qrcv_tipText 提示文案null
qrcv_tipTextSize 提示文案字体大小14sp
qrcv_tipTextColor 提示文案颜色@android:color/white
qrcv_isTipTextBelowRect 提示文案是否在扫描框的底部false
qrcv_tipTextMargin 提示文案与扫描框之间的间距20dp
qrcv_isShowTipTextAsSingleLine 是否把提示文案作为单行显示false
qrcv_isShowTipBackground 是否显示提示文案的背景false
qrcv_tipBackgroundColor 提示文案的背景色#22000000
qrcv_isScanLineReverse 扫描线是否来回移动true
qrcv_isShowDefaultGridScanLineDrawable 是否显示默认的网格图片扫描线false
qrcv_customGridScanLineDrawable 扫描线的网格图片资源nulll
qrcv_isOnlyDecodeScanBoxArea 是否只识别扫描框中的码false
qrcv_isShowLocationPoint 是否显示定位点false
qrcv_isAutoZoom 码太小时是否自动缩放false
更多的使用请看作者的git地址 里面用更详细的讲解