扫一扫,原来这么简单

原来,这么,简单 · 浏览次数 : 733

小编点评

**HMS Core 统一扫码服务开发步骤** **1. 开发准备** - 创建默认 View Mode 应用。 - 集成 Default View Mode 提供的相机扫码和导入图片扫码功能。 **2. 业务流程** - 用户发起扫码申请。 - 校验相机权限。 - 调用 HMS Core SDK 的 `startScan` 方法启动扫码界面。 **3. 开发可选功能** - 创建扫码选项参数,指定只检测特定码制式。 **4. 实现回调接口** - 重写 `onActivityResult` 方法处理扫码结果。 - 通过 `Intent` 获取扫码状态和结果。 **5. 获取 Intent 参数** - 檢查 `requestCode` 和 `resultCode`。 - 如果 `requestCode` 等于 `REQUEST_CODE_SCAN_ONE`,则表示接收的是 Scan Kit 返回的结果。 - 通过 `Intent` 中的 `RESULT_CODE` 获取扫码状态。 **6. 返回扫码结果** - 通过 `Intent` 返回扫码结果。

正文

二维码识别技术已广泛应用在移动支付、实用工具、电商购物、社交通讯等场景。然而,在实际生活中,二维码容易遇到距离远、暗光、强光、污损、模糊和大角度倾斜等复杂场景,导致识别困难,扫码体验差。华为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表示不上报错误,仅检查到识别结果后退出扫码页面,默认为false

HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE,HmsScan.DATAMATRIX_SCAN_TYPE).setViewType(1).setErrorCheck(true).create();
  1. 调用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);
  1. 实现回调接口接收扫码结果,相机扫码和导入图片扫码均通过该接口返回。

    调用Activity的“onActivityResult”方法获取Intent参数,扫描结果对象HmsScan封装在其中。如何获取Intent参数请参见RESULT

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

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

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

@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) {
        // 导入图片扫描返回结果
        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) {
            // 无文件权限,请求文件权限
        ...
        }
    }
}

了解更多详情>>

访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHubGitee

关注我们,第一时间了解 HMS Core 最新技术资讯~

与扫一扫,原来这么简单相似的内容:

扫一扫,原来这么简单

二维码识别技术已广泛应用在移动支付、实用工具、电商购物、社交通讯等场景。然而,在实际生活中,二维码容易遇到距离远、暗光、强光、污损、模糊和大角度倾斜等复杂场景,导致识别困难,扫码体验差。华为HMS Core 统一扫码服务(Scan Kit)为开发者们的APP带来一站式扫码解决方案,并且拥有高识别率和

HarmonyOS扫码服务,应用服务一扫直达打造系统级流量新入口

二维码如今是移动应用流量入口以及功能实现的重要工具,也是各App的流量入口,是物、人、服务的连接器,通过扫码我们可以更便捷的生活,更高效的进行信息交互,包括信息的发布、信息的获取。 在日常扫码过程中,我们也经常会遇到扫码环境暗、二维码污损、模糊等情况,导致识别二维码困难。HMS Core 统一扫码服

一图讲清楚公众号扫码关注绑定手机号自动登录

日常开发中,相信不管做 C 端还是 B 端业务的同学都会遇到微信相关的业务,比如微信登录、微信支付、公众号扫码关注等场景。 最近博主在做公众号扫码关注自动登录这一块的业务,因此总结绘制了一张**公众号扫码关注绑定手机号自动登录**流程图分享给大家。 ![扫码关注绑定手机自动登录](https://p

鸿蒙HarmonyOS实战-Stage模型(服务卡片的模块和创建)

一、服务卡片的模块和创建 在HarmonyOS中,服务卡片是一种提供即时信息和快速操作的小组件,类似于Android中的通知栏。服务卡片可以显示各种类型的信息,包括通知、天气、日历事件、音乐播放器、快捷方式等。用户可以根据自己的需求配置服务卡片,并通过轻扫或点击来查看详细信息或执行操作。此外,服

鸿蒙HarmonyOS实战-Stage模型(服务卡片介绍和运行机制)

一、服务卡片介绍 1.服务卡片的概念 在HarmonyOS中,服务卡片是一种提供即时信息和快速操作的小组件,类似于Android中的通知栏。服务卡片可以显示各种类型的信息,包括通知、天气、日历事件、音乐播放器、快捷方式等。用户可以根据自己的需求配置服务卡片,并通过轻扫或点击来查看详细信息或执

[CSP-S2019] 树的重心 题解

[CSP-S2019] 树的重心 因为这道题令我十分兴奋,所以来写一下做完后的思考。 这道题用到了树的重心的种种性质,在写解法的时候会一一点出其用处。 首先,枚举每一条边,然后各自 \(O(n)\) 扫一次的 \(O(n^2)\) 做法是简单的。 那么接下来,就会出现不同的解法了: 优化 \(O(n

微信Native支付(扫码支付)商户配置

0.需要从商户平台获取/设置的配置 公众号appId 商户号 APIv3密钥 证书序列号 证书密钥 ##1.扫码登录商户平台 网址:https://pay.weixin.qq.com/ 2.确认已开通Native支付 网址:https://pay.weixin.qq.com/index.php/pu

【FAQ】统一扫码服务常见问题及解答

1.隐私政策是怎么样的?收集哪些信息? 关于Scan Kit的隐私政策及收集的信息,请查看SDK隐私安全说明。 Android:SDK隐私安全说明 iOS:SDK隐私安全说明 2.如何使用多码识别?多码模式下如何实现指定条码?多码模式的坐标支持返回坐标么?多码模式下实现自动放大? 1)统一扫码服务支

Mapper that could not be found

现象1 mapper 资源扫不到 resources 建的是 目录 ,不是 package 所以如果直接 a.b 的方式创建,会扫描不到 mapper.xml 文件 现象2 缺少配置文件 HisDruidConfig SpringBoot 配置多数据源 现象3 没有启动添加扫描 启动项缺少扫描 Ma

Axure 二维码扫码

基础布局 1、一个300X395的黑底黑框矩形,不透明度为20%,命名为“背景框”: 2、一个150X150的白底白框矩形,不透明度为70%,命名为“扫描框”: 3、一条宽为131的绿色水平线,不透明度为30%,命名为“扫描条”,初始状态设置为隐藏: 4、一个文本标签,白色文字,文字内容为“将二维码