扫一扫,原来这么简单

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

相关文章

  • 集成Health Kit时因证书问题出现错误码50063的解决方案

    一、问题描述及操作 应用集成Health Kit SDK后,在华为手机上进行登录授权时,返回错误码50063。 1、查看相关错误码。‘50063’在Health Kit错误码中的描述是“安装的HMS Core APK版本不匹配,无法调用接口。”提供的解决方案是“请安装最新版本的HMS Core(APK)后,再调用接口”。 2、根据文档中提供的解决方案,卸载了…

    Android 2023年4月17日
    00
  • Android Studio的安装及环境配置

    Android Studio的安装及环境配置 安装jdk 下载及安装Android Studio 下载官网:https://developer.android.google.cn/studio/ 往下滑: 建议下载到除C盘以外的盘: 下载好安装程序之后 双击安装:一路next,install Android Virtual Device安卓虚拟设备,就是在电…

    Android 2023年4月24日
    00
  • Opengl ES之踩坑记

    前因 最近在尝试使用Opengl ES实现一些LUT滤镜效果,在实现这些滤镜效果的时候遇到一些兼容性的坑,踩过这些坑后我希望把这几个坑分享给读者朋友们,希望同在学习Opengl ES的朋友们能少走弯路。 关于LUT滤镜相关的介绍,也是这个Opengl ES系列入门教程的一项内容,在后面的文章中会专门介绍,这里暂时不展开讲解,后续大家敬请期待。 踩坑详情 1、…

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

    下面是关于Android报”SQLiteException”异常的原因和解决办法的详细讲解。 异常原因 在进行Android应用程序开发中,我们可能会遇到SQLite数据库相关的操作,例如创建表格、插入数据、查询数据等操作。当我们在应用程序中进行这些操作时,可能会遇到”SQLiteException”异常,其原因可能如下: SQL语法错误:在进行数据库操作时…

    Android 2023年4月3日
    00
  • 【FAQ】关于华为推送服务因营销消息频次管控导致服务通讯类消息下发失败的解决方案

    一. 问题描述 使用华为推送服务下发IM消息时,下发消息请求成功且code码为80000000,但是手机总是收不到消息; 在华为推送自助分析(Beta)平台查看发现,消息发送触发了频控。 二. 问题原因及背景 2023年1月05日起,华为推送服务对咨询营销类消息做了单个设备每日推送数量上限管理,具体数量上限可以查看如下文档:不同应用类别的推送数量上限要求。 …

    Android 2023年4月19日
    00
  • 【FAQ】获取Push Token失败,如何进行排查?

    一、 获取Push Token的方式 获取Push Token有两种方式:一种是调用getToken方法向Push服务端请求Token,当getToken方法返回为空时,Token可通过onNewToken方法返回,因此需要实现onNewToken方法;另一种是自动初始化,Token通过onNewToken方法返回。这两种方法的详细说明可看获取和注销Toke…

    Android 2023年4月18日
    00
  • AR Engine毫秒级平面检测,带来更准确的呈现效果

    近年来,AR版块成为时下大热,这是一种将现实环境中不存在的虚拟物体融合到真实环境里的技术,用户借助显示设备可以拥有真实的感官体验。AR的应用场景十分广泛,涉及娱乐、社交、广告、购物、教育等领域:AR可以让游戏更具互动性;商品通过AR展示更真实;使用AR进行教育教学让抽象事物更形象等,可以说AR技术已经渗透人们生活的方方面面。 为了让人们产生强烈的视觉真实感,…

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

    针对Android应用中出现”ConcurrentModificationException”异常的原因和解决办法,我来进行详细的讲解。 原因 该异常通常在同时操作同一个数据结构(如List、Map、Set等)时出现,因为在多线程操作时,如果数据结构正在被一个线程修改,而另一个线程正在尝试遍历它,那么就会引发”ConcurrentModificationEx…

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