扫一扫,原来这么简单

二维码识别技术已广泛应用在移动支付、实用工具、电商购物、社交通讯等场景。然而,在实际生活中,二维码容易遇到距离远、暗光、强光、污损、模糊和大角度倾斜等复杂场景,导致识别困难,扫码体验差。华为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 最新技术资讯~

原文链接:https://www.cnblogs.com/hmscore/p/17243955.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:扫一扫,原来这么简单 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • Android报”SecurityException”如何解决?

    首先我们需要知道在Android中,每个应用程序都会运行在自己的Sandbox中,这是为了保证应用程序之间的安全性和隔离性。这意味着当我们试图从应用程序中访问另一个应用程序或系统的一些敏感资源时,我们可能会遇到”SecurityException”异常。 该异常表示当前的应用程序没有足够的权限来执行某个操作。通常可以通过以下两种方式来解决该问题: 申请相关权…

    Android 2023年4月3日
    00
  • 音频编辑服务UI SDK接入指导及常见问题

    华为 HMS Core 音频编辑服务(Audio Editor Kit)是华为帮助全球开发者快速构建各类应用音频能力的服务,汇聚了华为在音乐、语音等相关音频领域的先进技术。音频编辑服务为开发者们提供音频基础编辑、AI配音、音源分离、空间渲染、变声、多种音效等丰富的音频处理能力,以及性能优异、简单易用、开放性强的接口,开发者们可依据应用场景,在App中高效轻松…

    Android 2023年4月18日
    00
  • 京东小程序折叠屏适配探索

    前言 随着近年来手机行业的飞速发展,手机从功能机进入到智能机,手机屏幕占比也随着技术和系统的进步越来越大,特别是Android 10推出以后,折叠屏逐渐成为Android手机发展的趋势。 图 1 Android手机屏幕发展趋势 京东小程序近年来也支持了越来越多的业务和应用,做好小程序的折叠屏的适配也是符合未来的发展趋势,能为用户和业务方提供更好的体验和价值。…

    Android 2023年5月8日
    00
  • 修改安卓ID为硬件唯一ID

    前言: 最近接到个需求,我们新产品上的外包侧APP需要使用硬件唯一ID(不管怎么升级怎么操作,ID始终不变和硬件绑定),用来做权限校验。 由于了解到安卓ID或序列号都会在擦除升级后重新随机生成,所以这里使用硬件上的ID来作为唯一ID,接下来进入正题 此篇以安卓7.1系统为例 一,常用硬件信息ID 这里列举一些常用的一芯一码ID查询获取方式 1. CPU ID…

    Android 2023年4月18日
    00
  • Android报”NetworkOnMainThreadException”如何解决?

    Android开发中经常会遇到一个错误 android.os.NetworkOnMainThreadException,这意味着当前线程试图访问网络资源,Android系统禁止在主线程中进行网络操作,因为这样会使UI线程阻塞,导致应用程序的响应变慢,让用户感到不满。 以下是该异常原因和解决办法的详细说明: 1. 异常原因 Android系统做了这个限制是为了…

    Android 2023年4月3日
    00
  • 【FAQ】申请运动健康服务验证环节常见问题及解答

    华为 HMS Core 运动健康服务(HUAWEI Health Kit)提供原子化数据开放。应用在获取用户数据授权后,可通过接口访问运动健康数据,对用户数据进行读写等操作,为用户提供运动健康类数据服务。 开发者应用在开发和测试阶段访问用户运动或健康数据时,会有100个用户的数量限制,需要通过“申请验证”来解除此限制。本文汇总了申请验证的相关问题,并给出了详…

    Android 2023年4月18日
    00
  • 实现自有App上架小游戏其实并非难事

    近年来小程序游戏迎来了爆发式增长。微信、支付宝、抖音等各大平台小程序游戏愈加丰富,你是否也让自己的App也拥有运行丰富的小游戏的能力?今天就来带大家看看如何实现。 我们先来看看各互联网巨头关于小游戏生态的特征: 「微信」 率先推出小程序,具有先发优势的微信平台毫无疑问走在了市场前列。根据2021阿拉丁发布的小游戏行业年度报告显示,微信小游戏已超过10w的开发…

    Android 2023年4月18日
    00
  • Android模拟器调试串口

    一、安装虚拟串口软件 虚拟串口软件推荐 Virtual Serial Port Driver 官网 和 Virtual Serial Port Kit 官网 都可以免费试用15天。 这里以Virtual Serial Port Kit为例,打开安装好的Virtual Serial Port Kit,点击菜单栏的新增图标 然后选择两个端口点确定即可 1.1 测…

    Android 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部