/ZXingLite

🔥 ZXing的精简版,优化扫码和生成二维码/条形码,内置闪光灯等功能。扫描风格支持:微信的线条样式,支付宝的网格样式。几句代码轻松拥有扫码功能 ,ZXingLite让集成更简单。(扫码识别速度快如微信)

Primary LanguageJavaApache License 2.0Apache-2.0

ZXingLite

Image

Download JCenter JitPack CI CircleCI API License Blog QQGroup

ZXingLite for Android 是ZXing的精简版,基于ZXing库优化扫码和生成二维码/条形码功能,扫码界面完全支持自定义,也可一行代码使用默认实现的扫码功能。总之你想要的都在这里。

简单如斯,你不试试? Come on~

Gif 展示

Image

ViewfinderView属性说明

属性 值类型 默认值 说明
maskColor color #60000000 扫描区外遮罩的颜色
frameColor color #7F1FB3E2 扫描区边框的颜色
cornerColor color #FF1FB3E2 扫描区边角的颜色
laserColor color #FF1FB3E2 扫描区激光线的颜色
resultPointColor color #C0EFBD21 扫描区结果点的颜色
labelText string 扫描提示文本信息
labelTextColor color #FFC0C0C0 提示文本字体颜色
labelTextSize dimension 14sp 提示文本字体大小
labelTextPadding dimension 24dp 提示文本距离扫描区的间距
labelTextLocation enum bottom 提示文本显示位置
showResultPoint boolean false 是否显示合适的扫码结果点
frameWidth dimension 扫码框宽度
frameHeight dimension 扫码框高度
laserStyle enum line 扫描激光的样式
gridColumn integer 20 网格扫描激光列数
gridHeight integer 40dp 网格扫描激光高度,为0dp时,表示动态铺满
cornerRectWidth dimension 4dp 扫描区边角的宽
cornerRectHeight dimension 16dp 扫描区边角的高
scannerLineMoveDistance dimension 2dp 扫描线每次移动距离
scannerLineHeight dimension 5dp 扫描线高度
frameLineWidth dimension 1dp 边框线宽度
scannerAnimationDelay integer 15 扫描动画延迟间隔时间,单位:毫秒
frameRatio float 0.625f 扫码框与屏幕占比

引入

Maven:

<dependency>
  <groupId>com.king.zxing</groupId>
  <artifactId>zxing-lite</artifactId>
  <version>1.1.9</version>
  <type>pom</type>
</dependency>

Gradle:

//AndroidX 版本
implementation 'com.king.zxing:zxing-lite:1.1.9-androidx'

//Android 版本
implementation 'com.king.zxing:zxing-lite:1.1.9'

Lvy:

<dependency org='com.king.zxing' name='zxing-lite' rev='1.1.9'>
  <artifact name='$AID' ext='pom'></artifact>
</dependency>
如果Gradle出现compile失败的情况,可以在Project的build.gradle里面添加如下:(也可以使用上面的GitPack来complie)
allprojects {
    repositories {
        maven { url 'https://dl.bintray.com/jenly/maven' }
    }
}

引入的库:

//AndroidX
api 'androidx.appcompat:appcompat:1.1.0'
api 'com.google.zxing:core:3.3.3'

//Android
api 'com.android.support:appcompat-v7:28.0.0'
api 'com.google.zxing:core:3.3.3'

示例

布局示例

可自定义布局(覆写getLayoutId方法),布局内至少要保证有SurfaceView和ViewfinderView,控件id可根据覆写CaptureActivity 的 getSurfaceViewId 和 getViewfinderViewId方法自定义

ivTorch为 v1.1.4版本新增的手电筒按钮,如果想改ID可通过CaptureActivity中的getIvTorchId自定义ID

如果是从v1.1.4以前版本升级至v1.1.4以上版本,请参考如下布局示例(新增ivTorch),也可忽略内置手电筒功能可直接将CaptureActivity中的getIvTorchId方法返回0

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <SurfaceView
            android:id="@+id/surfaceView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        <com.king.zxing.ViewfinderView
            android:id="@+id/viewfinderView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        <ImageView
            android:id="@+id/ivTorch"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@drawable/zxl_torch_selector"
            android:layout_marginTop="@dimen/torchMarginTop" />
    </FrameLayout>

或在你的布局中添加

    <include layout="@layout/zxl_capture"/>

代码示例 (二维码/条形码)

    //跳转的默认扫码界面
    startActivityForResult(new Intent(context,CaptureActivity.class),requestCode);

    //生成二维码
    CodeUtils.createQRCode(content,600,logo);
    //生成条形码
    CodeUtils.createBarCode(content, BarcodeFormat.CODE_128,800,200);
    //解析条形码/二维码
    CodeUtils.parseCode(bitmapPath);
    //解析二维码
    CodeUtils.parseQRCode(bitmapPath);

如果直接使用CaptureActivity需在您项目的AndroidManifest中添加如下配置

    <activity
        android:name="com.king.zxing.CaptureActivity"
        android:screenOrientation="portrait"
        android:theme="@style/CaptureTheme"/>

快速实现扫码有以下几种方式:

1、直接使用CaptureActivity或者CaptureFragment。(纯洁的扫码,无任何添加剂)

2、通过继承CaptureActivity或者CaptureFragment并自定义布局。(适用于大多场景,并无需关心扫码相关逻辑,自定义布局时需覆写getLayoutId方法)

3、在你项目的Activity或者Fragment中创建一个CaptureHelper并在相应的生命周期中调用CaptureHelper的周期。(适用于想在扫码界面写交互逻辑,又因为项目架构或其它原因,无法直接或间接继承CaptureActivity或CaptureFragment时使用)

4、参照CaptureHelper写一个自定义的扫码帮助类,其它步骤同方式3。(扩展高级用法,谨慎使用)

更多使用详情,请查看app中的源码使用示例或直接查看API帮助文档

版本记录

v1.1.9:2020-4-28

  • 修复1.1.8版本优化细节时,不小心改出个Bug(fix #86)

v1.1.8:2020-4-27

  • 统一日志管理
  • 优化细节

v1.1.7:2020-3-29

  • 优化一些默认参数配置
  • 修复扫码界面开启闪光灯并切到后台时,手电筒按钮状态未同步问题(fix #81)

v1.1.6:2019-12-27

  • 生成条形码/二维码时支持自定义配置颜色
  • 支持识别反色码(增强识别率,默认不支持,需通过CaptureHelper.supportLuminanceInvert(true)开启)

v1.1.5:2019-12-16

  • 优化Camera初始化相关策略,减少出现卡顿的可能性

v1.1.4:2019-11-18

  • 内置手电筒按钮,当光线太暗时,自动显示手电筒 (fix #58)
  • 生成二维码时Logo支持自定义大小 (fix #62)

v1.1.3:2019-9-24

  • 支持真实识别区域比例和识别区域偏移量可配置
  • 对外暴露更多可配置参数

v1.1.2:2019-6-27

  • 优化部分细节,为迁移至AndroidX做准备
  • 支持AndroidX对应版本

v1.1.1:2019-5-20

  • 支持扫二维码过小时,自动缩放
  • 支持识别垂直条形码(增强条形码识别,默认不支持,需通过CaptureHelper.supportVerticalCode(true)开启)

v1.1.0:2019-4-19

  • 将扫码相关逻辑与界面分离,ZXingLite使用更容易扩展
  • 新增CaptureFragment

v1.0.7:2019-4-9

  • 新增网格样式的扫描激光(类似支付宝扫码样式)
  • 升级Gradle至v4.6

v1.0.6:2019-1-16

  • 支持连续扫码
  • 支持横屏扫码(主要为了支持Pad)

v1.0.5:2018-12-29

  • 支持自定义扫码框宽高

v1.0.4:2018-12-19

  • 修改text相关自定义属性,如:text->labelText

v1.0.3:2018-11-20

  • 支持触摸缩放变焦

v1.0.2:2018-9-12

  • 支持条形码下方显示显示code
  • 优化相机预览尺寸遍历策略,从而降低预览变形的可能性

v1.0.1:2018-8-23

  • 优化扫码识别速度

v1.0.0:2018-8-9

  • ZXingLite初始版本

赞赏

如果您喜欢ZXingLite,或感觉ZXingLite帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 😃

您也可以扫描下面的二维码,请作者喝杯咖啡 ☕

关于我

Name: Jenly

Email: jenly1314#gmail.com / jenly1314#vip.qq.com

CSDN: jenly121

CNBlogs: jenly

Github: jenly1314

加入QQ群: 20867961