乐趣区

关于android:二维码污损反光距离远还能扫出来吗统一扫码服务告诉你能

二维码和条形码从创造到倒退曾经过来了几十年,因其能快捷不便读取信息的特点,在数字经济时代被广泛应用。扫描二维码能够辨认健康状况,辨认身份信息、拜访网站链接、实现金融领取等等,曾经成为生存中不可或缺的实用技术,所以很多 App 都搭载了“扫一扫”性能。

然而,在日常扫码过程中,咱们也常常会遇到扫码环境暗、二维码污损、含糊等状况,导致辨认二维码艰难。HMS Core 对立扫码服务(Scan Kit)为常见简单扫码场景(如反光、暗光、污损、含糊、柱面)做了针对性辨认优化,还能实现远距离码或小型码的检测和主动放大,晋升扫码成功率与用户体验。

1. 远距离扫码

一般的二维码扫描器只读间隔不超过 30 厘米,然而咱们生存中经常出现远距离扫码的状况,例如停车场远距离扫码缴费、公众场合扫码签到等,一般的扫码服务在这时候就会呈现扫码艰难的状况。对立扫码服务,因为在扫码解决流程中多了一个预检测的性能,即便是肉眼无奈分辨,也能够很好的主动放大超远距离的二维码。

2. 二维码污损

二维码污损也是户在日常扫码中常常遇到的状况,比方扫码骑行时遇到二维码破损,扫描纸质二维码因为纸张破损二维码不残缺的状况也常有呈现,对立扫码服务基于多项计算机视觉技术,能够大幅晋升简单场景识别率。

当然,HMS Core 对立扫码服务除了反对污损二维码扫描,遇到反光,暗光等场景,甚至将二维码贴在商品上时呈现曲面或棱角的状况,也能胜利扫码;哪怕你边走动边扫码,此时的二维码模糊不清也不影响扫码的准确率。

3. 多码辨认

在仓库盘点、收发货物时,经常遇到摆满了货物,下面都贴上条形码的状况,如果工人一个个扫码盘点,效率非常低。多码辨认能够帮忙仓库盘点,快递收发等场景实现一次辨认多个码,晋升业务解决效率。多码识别模式下,Scan Kit 一次最多能够同时辨认不限品种的 5 个码。

4. 多角度扫码

有时因为环境的限度,咱们不肯定能扫到侧面角度的二维码,对立扫码服务基于自动检测及旋转纠正能力,辨认区域更宽(侧面和侧面 +45°),反对用户从任意角度扫码,可主动校对疾速辨认二维码,即便地位不不便也能正确辨认,从而晋升利用扫码灵便度和识别率。

开发步骤

对立扫码服务提供多元的接入形式,起码 5 行代码即可领有弱小的扫码能力,开发者能够间接应用 Scan Kit 提供的默认扫码页面,也能够基于 Scan Kit 提供的示例代码,疾速自定义扫码性能。以下我会以 Default View Mode 为例,展现具体的集成步骤。

开发前筹备

  1. 在我的项目级”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'}
  1. 配置混同脚本
-ignorewarnings 
-keepattributes *Annotation*  
-keepattributes Exceptions  
-keepattributes InnerClasses  
-keepattributes Signature  
-keepattributes SourceFile,LineNumberTable  
-keep class com.hianalytics.android.**{*;}  
-keep class com.huawei.**{*;}
  1. 在“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);
  1. 校验是否开启相应的权限,决定是否持续扫码。
// 实现“onRequestPermissionsResult”函数接管校验权限后果。final int PERMISSIONS_LENGTH = 2;
@Override
public 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) {
        // 调用扫码接口,构建扫码能力。...
    }
}

构建扫码性能

  1. 依据理论需要创立扫码选项参数。
//“QRCODE_SCAN_TYPE”和“DATAMATRIX_SCAN_TYPE”示意只扫描 QR 和 Data Matrix 的码
HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE, HmsScan.DATAMATRIX_SCAN_TYPE).create();
  1. 调用 ScanUtil 的静态方法 startScan 启动 Default View 扫码页面。用户能够应用相机扫码,也能够通过该页面的“导入图片”按钮检测图片中的码。
ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, options);
  1. 实现回调接口接管扫码后果,相机扫码和导入图片扫码均通过该接口返回。
@Override
protected 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 最新技术资讯~

退出移动版