二维码和条形码从创造到倒退曾经过来了几十年,因其能快捷不便读取信息的特点,在数字经济时代被广泛应用。扫描二维码能够辨认健康状况,辨认身份信息、拜访网站链接、实现金融领取等等,曾经成为生存中不可或缺的实用技术,所以很多App都搭载了“扫一扫”性能。
然而,在日常扫码过程中,咱们也常常会遇到扫码环境暗、二维码污损、含糊等状况,导致辨认二维码艰难。HMS Core 对立扫码服务(Scan Kit)为常见简单扫码场景(如反光、暗光、污损、含糊、柱面)做了针对性辨认优化,还能实现远距离码或小型码的检测和主动放大,晋升扫码成功率与用户体验。
1. 远距离扫码
一般的二维码扫描器只读间隔不超过30厘米,然而咱们生存中经常出现远距离扫码的状况,例如停车场远距离扫码缴费、公众场合扫码签到等,一般的扫码服务在这时候就会呈现扫码艰难的状况。对立扫码服务,因为在扫码解决流程中多了一个预检测的性能,即便是肉眼无奈分辨,也能够很好的主动放大超远距离的二维码。
2. 二维码污损
二维码污损也是户在日常扫码中常常遇到的状况,比方扫码骑行时遇到二维码破损,扫描纸质二维码因为纸张破损二维码不残缺的状况也常有呈现,对立扫码服务基于多项计算机视觉技术,能够大幅晋升简单场景识别率。
当然,HMS Core 对立扫码服务除了反对污损二维码扫描,遇到反光,暗光等场景,甚至将二维码贴在商品上时呈现曲面或棱角的状况,也能胜利扫码;哪怕你边走动边扫码,此时的二维码模糊不清也不影响扫码的准确率。
3. 多码辨认
在仓库盘点、收发货物时,经常遇到摆满了货物,下面都贴上条形码的状况,如果工人一个个扫码盘点,效率非常低。多码辨认能够帮忙仓库盘点,快递收发等场景实现一次辨认多个码,晋升业务解决效率。多码识别模式下,Scan Kit一次最多能够同时辨认不限品种的5个码。
4. 多角度扫码
有时因为环境的限度,咱们不肯定能扫到侧面角度的二维码, 对立扫码服务基于自动检测及旋转纠正能力,辨认区域更宽(侧面和侧面+45°),反对用户从任意角度扫码,可主动校对疾速辨认二维码,即便地位不不便也能正确辨认,从而晋升利用扫码灵便度和识别率。
开发步骤
对立扫码服务提供多元的接入形式,起码5行代码即可领有弱小的扫码能力,开发者能够间接应用Scan Kit提供的默认扫码页面,也能够基于Scan Kit提供的示例代码,疾速自定义扫码性能。以下我会以Default View Mode为例,展现具体的集成步骤。
开发前筹备
- 在我的项目级”setting.gradle”中配置HMS Core maven仓地址
pluginManagement { repositories { gradlePluginPortal() google() mavenCentral() // 配置HMS Core SDK的Maven仓地址。 maven { url 'https://developer.huawei.com/repo/' } }}dependencyResolutionManagement { ... repositories { google() mavenCentral() // 配置HMS Core SDK的Maven仓地址。 maven { url 'https://developer.huawei.com/repo/' } }}
2.在利用级的build.gradle上增加编译依赖
dependencies{ implementation 'com.huawei.hms:scanplus:2.4.0.302' }
- 配置混同脚本
-ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.hianalytics.android.**{*;} -keep class com.huawei.**{*;}
- 在“AndroidManifest.xml”中指定相机权限和文件读取权限,并动静申请权限
<!--相机权限--> <uses-permission android:name="android.permission.CAMERA" /> <!--读文件权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> // CAMERA_REQ_CODE为用户自定义,用于接管权限校验后果的申请码。this.requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, CAMERA_REQ_CODE);
- 校验是否开启相应的权限,决定是否持续扫码。
// 实现“onRequestPermissionsResult”函数接管校验权限后果。final int PERMISSIONS_LENGTH = 2;@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { // 判断“requestCode”是否为申请权限时设置申请码CAMERA_REQ_CODE,而后校验权限开启状态。 if (requestCode == CAMERA_REQ_CODE && grantResults.length == PERMISSIONS_LENGTH && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) { // 调用扫码接口,构建扫码能力。 ... }}
构建扫码性能
- 依据理论需要创立扫码选项参数。
// “QRCODE_SCAN_TYPE”和“DATAMATRIX_SCAN_TYPE”示意只扫描QR和Data Matrix的码HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE, HmsScan.DATAMATRIX_SCAN_TYPE).create();
- 调用ScanUtil的静态方法startScan启动Default View扫码页面。用户能够应用相机扫码,也能够通过该页面的“导入图片”按钮检测图片中的码。
ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, options);
- 实现回调接口接管扫码后果,相机扫码和导入图片扫码均通过该接口返回。
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK || data == null) { return; } if (requestCode == REQUEST_CODE_SCAN_ONE) { // 导入图片扫描返回后果 HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT); if (obj != null) { // 展现解码后果 showResult(obj); } }}
理解更多详情>>
拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee
关注咱们,第一工夫理解 HMS Core 最新技术资讯~