几句代码轻松拥有扫码功能!

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

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

ViewfinderView属性说明

属性值类型默认值说明
maskColorcolor#60000000扫描区外遮罩的颜色
frameColorcolor#7F1FB3E2扫描区边框的颜色
cornerColorcolor#FF1FB3E2扫描区边角的颜色
laserColorcolor#FF1FB3E2扫描区激光线的颜色
labelTextstring扫描提示文本信息
labelTextColorcolor#FFC0C0C0提示文本字体颜色
labelTextSizedimension14sp提示文本字体大小
labelTextPaddingdimension24dp提示文本距离扫描区的间距
labelTextWidthdimension提示文本的宽度,默认为View的宽度
labelTextLocationenumbottom提示文本显示位置
frameWidthdimension扫码框宽度
frameHeightdimension扫码框高度
laserStyleenumline扫描激光的样式
gridColumninteger20网格扫描激光列数
gridHeightinteger40dp网格扫描激光高度,为0dp时,表示动态铺满
cornerRectWidthdimension4dp扫描区边角的宽
cornerRectHeightdimension16dp扫描区边角的高
scannerLineMoveDistancedimension2dp扫描线每次移动距离
scannerLineHeightdimension5dp扫描线高度
frameLineWidthdimension1dp边框线宽度
scannerAnimationDelayinteger20扫描动画延迟间隔时间,单位:毫秒
frameRatiofloat0.625f扫码框与屏幕占比
framePaddingLeftdimension0扫码框左边的内间距
framePaddingTopdimension0扫码框上边的内间距
framePaddingRightdimension0扫码框右边的内间距
framePaddingBottomdimension0扫码框下边的内间距
frameGravityenumcenter扫码框对齐方式

引入

Gradle:

最新版本

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

v1.x 旧版本

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

//Android Support 版本
implementation 'com.king.zxing:zxing-lite:1.1.9'
如果Gradle出现compile失败的情况,可以在Project的build.gradle里面添加如下:(也可以使用上面的JitPack来compile)
allprojects {
repositories {
//...
maven { url 'https://dl.bintray.com/jenly/maven' }
}
}

版本说明

v2.x 基于CameraX重构震撼发布

v2.x 相对于 v1.x 的优势

  • v2.x基于CameraX,抽象整体流程,可扩展性更高。
  • v2.x基于CameraX通过预览裁剪的方式确保预览界面不变形,无需铺满屏幕,就能适配(v1.x通过遍历Camera支持预览的尺寸,找到与屏幕最接近的比例,减少变形的可能性(需铺满屏幕,才能适配))

v2.x 特别说明

  • v2.x如果您是通过继承CaptureActivity或CaptureFragment实现扫码功能,那么动态权限申请相关都已经在CaptureActivity或CaptureFragment处理好了。
  • v2.x如果您是通过继承CaptureActivity或CaptureFragment实现扫码功能,如果有想要修改默认配置,可重写initCameraScan方法,修改CameraScan的配置即可,如果无需修改配置,直接在跳转原界面的onActivityResult 接收扫码结果即可(更多具体详情可参见app中的使用示例)。
关于CameraX
  • CameraX暂时还是Beta版,可能会存在一定的稳定性,如果您有这个考量,可以继续使用 ZXingLite 以前的 v1.x 版本。相信不久之后CameraX就会发布稳定版。

v1.x 说明

【v1.1.9】 如果您正在使用 1.x 版本请点击下面的链接查看分支版本,当前 2.x 版本已经基于 Camerx 进行重构,不支持升级,请在新项目中使用。

查看AndroidX版 1.x 分支 请戳此处

查看Android Support版 1.x 分支 请戳此处

查看 1.x API帮助文档

使用 v1.x 版本的无需往下看了,下面的示例和相关说明都是针对于当前最新版本。

示例

布局示例

可自定义布局(覆写getLayoutId方法),布局内至少要保证有PreviewView。

PreviewView 用来预览,布局内至少要保证有PreviewView,如果是继承CaptureActivity或CaptureFragment,控件id可覆写getPreviewViewId方法自定义

ViewfinderView 用来渲染扫码视图,给用户起到一个视觉效果,本身扫码识别本身没有关系,如果是继承CaptureActivity或CaptureFragment,控件id可复写getViewfinderViewId方法自定义,默认为previewView,返回0表示无需ViewfinderView

ivFlashlight 用来内置手电筒,如果是继承CaptureActivity或CaptureFragment,控件id可复写getFlashlightId方法自定义,默认为ivFlashlight。返回0表示无需内置手电筒。您也可以自己去定义

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.camera.view.PreviewView
android:id="@+id/previewView"
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/ivFlashlight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/zxl_flashlight_selector"
android:layout_marginTop="@dimen/zxl_flashlight_margin_top" />
</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);

CameraScan配置示例

    //获取CameraScan,扫码相关的配置设置。CameraScan里面包含部分支持链式调用的方法,即调用返回是CameraScan本身的一些配置建议在startCamera之前调用。
getCameraScan().setPlayBeep(true)//设置是否播放音效,默认为false
.setVibrate(true)//设置是否震动,默认为false
.setCameraConfig(new CameraConfig())//设置相机配置信息,CameraConfig可覆写options方法自定义配置
.setNeedAutoZoom(false)//二维码太小时可自动缩放,默认为false
.setNeedTouchZoom(true)//支持多指触摸捏合缩放,默认为true
.setDarkLightLux(45f)//设置光线足够暗的阈值(单位:lux),需要通过{@link #bindFlashlightView(View)}绑定手电筒才有效
.setBrightLightLux(100f)//设置光线足够明亮的阈值(单位:lux),需要通过{@link #bindFlashlightView(View)}绑定手电筒才有效
.bindFlashlightView(ivFlashlight)//绑定手电筒,绑定后可根据光线传感器,动态显示或隐藏手电筒按钮
.setOnScanResultCallback(this)//设置扫码结果回调,需要自己处理或者需要连扫时,可设置回调,自己去处理相关逻辑
.setAnalyzer(new MultiFormatAnalyzer(new DecodeConfig()))//设置分析器,DecodeConfig可以配置一些解码时的配置信息,如果内置的不满足您的需求,你也可以自定义实现,
.setAnalyzeImage(true)//设置是否分析图片,默认为true。如果设置为false,相当于关闭了扫码识别功能
.startCamera();//启动预览


//设置闪光灯(手电筒)是否开启,需在startCamera之后调用才有效
getCameraScan().enableTorch(torch);

CameraScan配置示例(只需识别二维码的配置示例)

        //初始化解码配置
DecodeConfig decodeConfig = new DecodeConfig();
decodeConfig.setHints(DecodeFormatManager.QR_CODE_HINTS)//如果只有识别二维码的需求,这样设置效率会更高,不设置默认为DecodeFormatManager.DEFAULT_HINTS
.setFullAreaScan(false)//设置是否全区域识别,默认false
.setAreaRectRatio(0.8f)//设置识别区域比例,默认0.8,设置的比例最终会在预览区域裁剪基于此比例的一个矩形进行扫码识别
.setAreaRectVerticalOffset(0)//设置识别区域垂直方向偏移量,默认为0,为0表示居中,可以为负数
.setAreaRectHorizontalOffset(0);//设置识别区域水平方向偏移量,默认为0,为0表示居中,可以为负数

//在启动预览之前,设置分析器,只识别二维码
getCameraScan()
.setVibrate(true)//设置是否震动,默认为false
.setAnalyzer(new MultiFormatAnalyzer(decodeConfig));//设置分析器,如果内置实现的一些分析器不满足您的需求,你也可以自定义去实现

如果直接使用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中实例化一个CameraScan即可。(适用于想在扫码界面写交互逻辑,又因为项目架构或其它原因,无法直接或间接继承CaptureActivity或CaptureFragment时使用)

4、继承CameraScan自己实现一个,可参照默认实现类DefaultCameraScan,其它步骤同方式3。(扩展高级用法,谨慎使用)

其他

需使用JDK8+编译,在你项目中的build.gradle的android{}中添加配置:

compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}

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

代码下载:ZXingLite.zip

0 个评论

要回复文章请先登录注册