BGAQRCode-Android 多样式扫描二维码

下载链接:https://download.csdn.net/download/sinat_28238111/10502468

目录

功能介绍

根据之前公司的产品需求,参考 barcodescanner 改的,希望能帮助到有生成二维码、扫描二维码、识别图片二维码等需求的猿友。修改幅度较大,也就没准备针对 barcodescanner 库提交PR。

  •  可定制各式各样的扫描框
  •  可定制全屏扫描或只识别扫描框区域内码
  •  可定制要识别的码的格式(详细用法查看 TestScanActivity 中的 onClick 方法)
  •  可以控制闪光灯,方便夜间使用
  •  可以设置用前置摄像头扫描

  •  ZXing 生成可自定义颜色、带 logo 的二维码
  •  ZXing 生成一维码
  •  ZXing 扫描条码、二维码
  •  ZXing 识别图库中的条码、二维码图片

  •  ZBar 扫描条码、二维码「已解决中文乱码问题」
  •  ZBar 识别图库中的条码、二维码图片

常见问题

1.部分手机无法扫描出结果,扫描预览界面二维码被压缩

使用的时候将 Toolbar 或者其他 View 盖在 ZBarView 或者 ZXingView 的上面,让 ZBarView 或者 ZXingView 填充屏幕宽高。ZXing 布局文件参考 ZBar 布局文件参考

2.出现黑屏

在自己项目里集成时记得在 onDestroy 方法中调用 mQRCodeView.onDestroy(),在 onStop 方法中调用 mQRCodeView.stopCamera(),否则会出现黑屏。如果没执行前面提到的这两个方法出现黑屏的话,那你就只能加上前面提到的两个方法后,重启手机后重新运行了

3.Gradle 依赖时提示找不到cn.bingoogolapple:bga-libraryname:「latestVersion」

Download 「latestVersion」指的是左边这个 Download 徽章后面的「数字」,请自行替换。请不要再来问我「latestVersion」是什么了

效果图与示例 apk

zbar109 zxingbarcode109 zxingdecode109 zxingqrcode109 iqegg

点击下载 ZXingDemo.apk或扫描下面的二维码安装点击下载 ZBarDemo.apk或扫描下面的二维码安装
ZXingDemo apk文件二维码ZBarDemo apk文件二维码

Gradle 依赖

Download 「latestVersion」指的是左边这个 Download 徽章后面的「数字」,请自行替换。请不要再来问我「latestVersion」是什么了

ZXing

dependencies {
    implementation 'cn.bingoogolapple:bga-qrcode-zxing:latestVersion'
}

ZBar

dependencies {
    implementation 'cn.bingoogolapple:bga-qrcode-zbar:latestVersion'
}

布局文件

ZXing

<cn.bingoogolapple.qrcode.zxing.ZXingView
    android:id="@+id/zxingview"
    style="@style/MatchMatch"
    app:qrcv_animTime="1000"
    app:qrcv_borderColor="@android:color/white"
    app:qrcv_borderSize="1dp"
    app:qrcv_cornerColor="@color/colorPrimaryDark"
    app:qrcv_cornerLength="20dp"
    app:qrcv_cornerSize="3dp"
    app:qrcv_maskColor="#33FFFFFF"
    app:qrcv_rectWidth="200dp"
    app:qrcv_scanLineColor="@color/colorPrimaryDark"
    app:qrcv_scanLineSize="1dp"
    app:qrcv_topOffset="90dp" />

ZBar

<cn.bingoogolapple.qrcode.zbar.ZBarView
    android:id="@+id/zbarview"
    style="@style/MatchMatch"
    app:qrcv_animTime="1000"
    app:qrcv_borderColor="@android:color/white"
    app:qrcv_borderSize="1dp"
    app:qrcv_cornerColor="@color/colorPrimaryDark"
    app:qrcv_cornerLength="20dp"
    app:qrcv_cornerSize="3dp"
    app:qrcv_isShowDefaultScanLineDrawable="true"
    app:qrcv_maskColor="#33FFFFFF"
    app:qrcv_rectWidth="200dp"
    app:qrcv_scanLineColor="@color/colorPrimaryDark"
    app:qrcv_topOffset="90dp" />

自定义属性说明

属性名说明默认值
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

接口说明

QRCodeView

/**
 * ZBarView 设置识别的格式。详细用法请看 zbardemo 的 TestScanActivity 中的 onClick 方法
 *
 * @param barcodeType 识别的格式
 * @param formatList  barcodeType 为 BarcdeType.CUSTOM 时,必须指定该值
 */
public void setType(BarcodeType barcodeType, List<BarcodeFormat> formatList)

/**
 * ZXingView 设置识别的格式。详细用法请看 zxingdemo TestScanActivity 中的 onClick 方法
 *
 * @param barcodeType 识别的格式
 * @param hintMap     barcodeType 为 BarcodeType.CUSTOM 时,必须指定该值
 */
public void setType(BarcodeType barcodeType, Map<DecodeHintType, Object> hintMap)

/**
 * 设置扫描二维码的代理
 *
 * @param delegate 扫描二维码的代理
 */
public void setDelegate(Delegate delegate)

/**
 * 显示扫描框
 */
public void showScanRect()

/**
 * 隐藏扫描框
 */
public void hiddenScanRect()

/**
 * 打开后置摄像头开始预览,但是并未开始识别
 */
public void startCamera()

/**
 * 打开指定摄像头开始预览,但是并未开始识别
 *
 * @param cameraFacing  Camera.CameraInfo.CAMERA_FACING_BACK or Camera.CameraInfo.CAMERA_FACING_FRONT
 */
public void startCamera(int cameraFacing)

/**
 * 关闭摄像头预览,并且隐藏扫描框
 */
public void stopCamera()

/**
 * 延迟0.5秒后开始识别
 */
public void startSpot()

/**
 * 延迟delay毫秒后开始识别
 *
 * @param delay
 */
public void startSpotDelay(int delay)

/**
 * 停止识别
 */
public void stopSpot()

/**
 * 停止识别,并且隐藏扫描框
 */
public void stopSpotAndHiddenRect()

/**
 * 显示扫描框,并且延迟0.5秒后开始识别
 */
public void startSpotAndShowRect()

/**
 * 打开闪光灯
 */
public void openFlashlight()

/**
 * 关闭散光灯
 */
public void closeFlashlight()

/**
 * 解析本地图片二维码。返回二维码图片里的内容 或 null
 *
 * @param picturePath 要解析的二维码图片本地路径
 */
public void decodeQRCode(String picturePath)

/**
 * 解析 Bitmap 二维码。返回二维码图片里的内容 或 null
 *
 * @param bitmap 要解析的二维码图片
 */
public void decodeQRCode(Bitmap bitmap)

QRCodeView.Delegate 扫描二维码的代理

/**
 * 处理扫描结果
 *
 * @param result 摄像头扫码时只要回调了该方法 result 就一定有值,不会为 null。解析本地图片或 Bitmap 时 result 可能为 null
 */
void onScanQRCodeSuccess(String result)

/**
 * 处理打开相机出错
 */
void onScanQRCodeOpenCameraError()

QRCodeEncoder 创建二维码图片。几个重载方法都是耗时操作,请在子线程中调用。

/**
 * 同步创建黑色前景色、白色背景色的二维码图片。该方法是耗时操作,请在子线程中调用。
 *
 * @param content 要生成的二维码图片内容
 * @param size    图片宽高,单位为px
 */
public static Bitmap syncEncodeQRCode(String content, int size)

/**
 * 同步创建指定前景色、白色背景色的二维码图片。该方法是耗时操作,请在子线程中调用。
 *
 * @param content         要生成的二维码图片内容
 * @param size            图片宽高,单位为px
 * @param foregroundColor 二维码图片的前景色
 */
public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor)

/**
 * 同步创建指定前景色、白色背景色、带logo的二维码图片。该方法是耗时操作,请在子线程中调用。
 *
 * @param content         要生成的二维码图片内容
 * @param size            图片宽高,单位为px
 * @param foregroundColor 二维码图片的前景色
 * @param logo            二维码图片的logo
 */
public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor, Bitmap logo)

/**
 * 同步创建指定前景色、指定背景色、带logo的二维码图片。该方法是耗时操作,请在子线程中调用。
 *
 * @param content         要生成的二维码图片内容
 * @param size            图片宽高,单位为px
 * @param foregroundColor 二维码图片的前景色
 * @param backgroundColor 二维码图片的背景色
 * @param logo            二维码图片的logo
 */
public static Bitmap syncEncodeQRCode(String content, int size, int foregroundColor, int backgroundColor, Bitmap logo)

/**
 * 同步创建条形码图片
 *
 * @param content  要生成条形码包含的内容
 * @param width    条形码的宽度,单位px
 * @param height   条形码的高度,单位px
 * @param textSize 字体大小,单位px,如果等于0则不在底部绘制文字
 */
public static Bitmap syncEncodeBarcode(String content, int width, int height, int textSize)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值