Scan Kit 华为统一扫码服务的使用介绍
简介
华为统一扫码服务(Scan Kit)提供便捷的条形码和二维码扫描、解析、生成能力,帮助您快速构建应用内的扫码功能。
.
优点
Scan Kit可以实现远距离码或小型码的检测和自动放大,同时针对常见复杂扫码场景(如反光、暗光、污损、模糊、柱面)做了针对性识别优化,提升扫码成功率与用户体验。扫码体验比 ZXing 更好,并且可以免费使用。
.
支持的码制式
Scan Kit支持扫描13种全球主流的码制式。如果您的应用只处理部分特定的码制式,您也可以在接口中指定制式以便加快扫码速度。已支持的码制式:
一维码:
EAN-8
、EAN-13
、UPC-A
、UPC-E
、Codabar
、Code 39
、Code 93
、Code 128
、ITF
二维码:
QR Code
、Data Matrix
、PDF417
、Aztec
.
Scan Kit的4种调用模式
- Default View Mode模式
在该模式下,扫码流程是由Scan Kit提供并进行处理的,并且Scan Kit也提供扫码界面,开发者不用做任何处理就可以直接使用扫码功能。在此模式下可以实现 相机扫码 和 导入图片扫码等功能。
- Customized View Mode模式
在该模式下,扫码流程是由Scan Kit提供并进行处理的,但是扫码界面需要开发者自定义,可以通过自定义扫码界面,来满足不同的项目需求。
- Bitmap Mode模式
在该模式下,扫码流程和扫码界面都需要开发者自己来处理扫码的流程和自定义扫码界面,在此模式下开发者拥有更加大的自定义空间,可以执行特定的扫码流程。
- MultiProcessor Mode模式
在该模式下,扫码流程和扫码界面都需要开发者自己来处理扫码的流程和自定义扫码界面,在此模式下开发者可以实现 同时检测多个码,或者与
ML Kit
匹配实现同时识别码和人脸等其他对象
.
码值的解析结果
Scan Kit可以将码的原始内容返回给开发者,还会针对使用特定内容格式编码的二维码/条码进行分析并提取结构化数据,帮助开发者快速构建关联服务。
支持场景:
联系人信息、Wi-Fi连接信息、网页、日历日程、ID卡、短信、电话、邮件、地理位置、商品条码、ISBN。
.
Scan Kit也支持生成码
Scan Kit支持将字符串转换为一维码或二维码,目前已支持的码制式为
EAN-8
、EAN-13
、UPC-A
、UPC-E
、Codabar
、Code 39
、Code 93
、Code 128
、ITF
、QR Code
、Data Matrix
、PDF417、Aztec
。开发者只需要提供字符串、码制式和尺寸要求即可获得相应的码图。
.
.
Scan Kit的简单使用
1. 在全局build.gradle
文件里添加华为maven仓库
buildscript {
repositories {
maven {
url 'http://developer.huawei.com/repo/'}
}
}
allprojects {
repositories {
maven {
url 'http://developer.huawei.com/repo/'}
}
}
2. 在build.gradle文件里添加Scan Kit的依赖
apply plugin: 'com.huawei.agconnect'
...
dependencies{
//Scan Kit的依赖
//plus版
implementation 'com.huawei.hms:scanplus:1.1.1.301'
//普通版
implementation 'com.huawei.hms:scan:1.1.3.301'
}
注:
Scan Kit的SDK有两种版本,普通版和plus版,plus版效果好点儿但是包稍微大一点儿,支持增强识别模型。
3. 在proguard-rules.pro
文件里配置混淆脚本
如果开发者开启混淆配置,请按照如下步骤配置,避免HMS SDK相关代码被混淆导致功能异常。
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{
*;}
-keep class com.huawei.**{
*;}
AndResGuard下的配置:
"R.string.hms*",
"R.string.connect_server_fail_prompt_toast",
"R.string.getting_message_fail_prompt_toast",
"R.string.no_available_network_prompt_toast",
"R.string.third_app_*",