二维码辨认技术已广泛应用在挪动领取、实用工具、电商购物、社交通信等场景。然而,在理论生存中,二维码容易遇到距离远、暗光、强光、污损、含糊和大角度歪斜等简单场景,导致辨认艰难,扫码体验差。华为HMS Core 对立扫码服务(Scan Kit)为开发者们的APP带来一站式扫码解决方案,并且领有高识别率和疾速辨认等特点。

间隔太远、码图过小?

在停车场扫码缴费、上课扫码签到、广告牌宣传等理论生存场景中,二维码的尺寸不一,个别的扫码性能需手动调节手机相机框与二维码的间隔直到适合的扫码大小,实属不便。对立扫码服务基于自研的深度学习算法模型,遇到远距离场景、码图过小、甚至肉眼无奈分辨的状况,反对自动检测放大,智能辨认。

多角度、光线不佳、含糊等简单场景无奈辨认?

餐桌、共享单车、充电桩等设施上的二维码,易受环境或人为影响,导致污损、含糊、反光,无奈清晰展现,造成辨认艰难。对立扫码服务基于多项计算机视觉技术,能够大幅晋升简单场景识别率,对立扫码服务能够自动检测及旋转纠正,可能在辨认任意角度的同时保障准确率。

单个扫码效率低?

在录入商品信息、快递信息等须要频繁扫码的场景中,个别的扫码性能辨认胜利后会主动跳转,操作不便。对立扫码服务为您带来间断扫码性能,对相机内间断呈现的二维码辨认检测,防止辨认胜利主动跳转的问题。同时,多码识别模式下,对立扫码服务最多可同时辨认不限品种的5个码,大幅晋升工作效率。

另外,HMS Core 对立扫码服务为助力开发者们构建晦涩的扫码体验,带来更加欠缺的性能:

① 反对辨认/生成13种支流码格局;

② 反对自定义扫码界面;

③ 反对剖析12个场景的码内容,提取结构化数据;

④ 提供内存 1.1M / 3.3M 两种SDK及4种不同类型的调用形式,安卓版本起码5行代码即可疾速接入。

上面是接入 HMS Core 对立扫码服务的开发步骤,以Default View Mode为例,只需简略的集成就可为利用构建扫码能力。

开发步骤

1. 开发筹备

具体筹备步骤可参考华为开发者联盟官网。

2. 集成筹备

Default View Mode提供相机扫码和导入图片扫码两个性能,提供残缺的Activity,不须要您开发扫码界面。

留神:应用此种模式请确保您的利用没有敞开硬件加速,即“hardwareAccelerated”为“true”。否则在个别机型可能会呈现黑屏问题。

3. 业务流程

应用Default View Mode的次要业务流程如下:

1) 用户关上App发动扫码申请。

2) 校验是否有相机权限。

3) 权限验证通过后,调用HMS Core SDK的startScan扫码接口,启动扫码界面。若须要满足最小权限和场景化触发要求,文件读取权限在用户点击后触发场景,须要设置谬误监听,检测到无文件读取权限,Scan Kit报错退出Default View。

4) 判断扫码页面启动状态。

5) HMS Core SDK回调利用的“onActivityResult”接口。

6) 依据扫码状态RESULT_CODE获取扫码后果:若SUCCESS返回后果给用户;若后果为ERROR_NO_READ_PERMISSION,须要利用被动申请文件读取权限,从新进入Default View。

7) App封装扫码后果返回给用户。

  1. 开发步骤

1) (可选)依据理论需要创立扫码选项参数。

Scan Kit默认反对13种码制式,您也能够指定Scan Kit只扫描特定的码制式以进步扫码速度。例如,当仅须要检测QR码和DataMatrix码时,请依照以下示例构建HmsScanAnalyzerOptions对象。如果不限度检测码格局,您能够不创立HmsScanAnalyzerOptions对象。“1”为您设置的扫码题目款式参数,对应setViewType办法中的“var1”参数。

// “QRCODE_SCAN_TYPE”和“DATAMATRIX_SCAN_TYPE”示意只扫描QR和DataMatrix的码,setViewType设置扫码题目,0示意设置扫码题目为”扫描二维码/条码“,1示意设置扫码题目为”扫描二维码“,默认为0;setErrorCheck设置谬误监听,true示意监听谬误并退出扫码页面,false示意不上报谬误,仅查看到辨认后果后退出扫码页面,默认为falseHmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE,HmsScan.DATAMATRIX_SCAN_TYPE).setViewType(1).setErrorCheck(true).create();

2) 调用ScanUtil的静态方法startScan启动Default View扫码页面。用户能够应用相机扫码,也能够通过该页面的“导入图片”按钮检测图片中的码。

“REQUEST_CODE_SCAN_ONE”为您设置的申请码参数,对应“onActivityResult”办法中的“requestCode”参数,用于判断“onActivityResult”调用是否来自Scan Kit扫码后果回调。若“requestCode”参数等于您设置的申请码参数,则示意本次“onActivityResult”是Scan Kit的扫码后果回调。

如果您没有指定只检测特定的码制式,此处的options能够置为“null”,示意默认检测Scan Kit反对的码制式。

ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, options);

3) 实现回调接口接管扫码后果,相机扫码和导入图片扫码均通过该接口返回。

调用Activity的“onActivityResult”办法获取Intent参数,扫描后果对象HmsScan封装在其中。如何获取Intent参数请参见[RESULT](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/scan-scanutil4-0000001050167699#section13418152610215?ha_source=hms1)。

若“requestCode”等于步骤2中定义的“REQUEST_CODE_SCAN_ONE”申请码参数,则示意本次接管的Intent是Scan Kit返回的后果。

通过Intent中的RESULT_CODE获取扫码状态。

通过Intent中的RESULT获取扫码后果HmsScan,其中蕴含的信息参见码值解析。

@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) {        // 导入图片扫描返回后果        int errorCode = data.getIntExtra(ScanUtil.RESULT_CODE, ScanUtil.SUCCESS);        if (errorCode == ScanUtil.SUCCESS) {        Object obj = data.getParcelableExtra(ScanUtil.RESULT);        if (obj != null) {                // 展现扫码后果        ...            }    }        if (errorCode == ScanUtil.ERROR_NO_READ_PERMISSION) {            // 无文件权限,申请文件权限        ...        }    }}

理解更多详情>>

拜访华为开发者联盟官网
获取开发领导文档
华为挪动服务开源仓库地址:GitHub、Gitee

关注咱们,第一工夫理解 HMS Core 最新技术资讯~