提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、华为统一扫码服务是什么?
  • 二、使用步骤
    • 1.准备工作
    • 2.开启扫码功能
    • 3.自定义扫码页面
    • 4.同时识别多个二维码
  • 总结

前言

Android上的二维码扫描库相信大家都用过ZXing吧,这里给大家介绍一个新的解决方案:华为统一扫码服务。可一行代码调用默认扫码页面,也可以自定义扫码UI,还可以同时识别多个二维码及从相册选择照片进行识别。
给个截图展示一下效果:


一、华为统一扫码服务是什么?

华为统一扫码服务是由HMS SDK提供的一项识别一维码、二维码的能力。使用该服务可以给app快速引入条形码、二维码识别和生成的功能。

二、使用步骤

1.准备工作

(1)准备好华为开发者账号并创建应用
这一步需要自己去华为开发者网站上操作,提交各种资料注册账号,成功后再创建应用。
(2)集成HMS Core SDK和引入扫码库
官方文档地址:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-integrating-sdk-0000001050042006

(3)配置混淆脚本
官方文档地址:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-config-obfuscation-scripts-0000001050043957

2.开启扫码功能

做好上面的步骤顺利引入SDK后,就可以开始整代码了。
第一步、检查AndroidManifest.xml文件中是否有配置相机和存储权限,没有的话需要加上;使用时仍需要在代码中动态申请

<!--相机权限-->
<uses-permission android:name="android.permission.CAMERA" />
<!--文件读取权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

第二步、编写布局,点击按钮,申请权限,授权后打开扫码页面,开始扫码
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:id="@+id/scan_default"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="默认扫码"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><Buttonandroid:id="@+id/scan_customized"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="自定义扫码"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/scan_default" /><Buttonandroid:id="@+id/scan_multi"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="同时扫多个码"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@id/scan_customized" /></androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java如下

package com.example.scan.demo;import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;import com.huawei.hms.hmsscankit.ScanUtil;
import com.huawei.hms.ml.scan.HmsScan;
import com.huawei.hms.ml.scan.HmsScanAnalyzerOptions;public class MainActivity extends AppCompatActivity {private static final int REQUEST_CODE_SCAN_ONE = 99;private static final int REQUEST_CODE_PERMISSION = 98;//必须的权限private String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//点击事件findViewById(R.id.scan_default).setOnClickListener(v -> {//判断操作系统的版本,Android 6.0及以上需要动态申请权限if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {this.requestPermissions(permissions, REQUEST_CODE_PERMISSION);} else {startDefaultScanMode();}});}//开启默认扫码模式private void startDefaultScanMode() {HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE, HmsScan.DATAMATRIX_SCAN_TYPE).create();ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, options);}//申请权限后的返回结果处理@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == REQUEST_CODE_PERMISSION) {for (int i = 0; i < grantResults.length; i++) {if (grantResults[i] == PackageManager.PERMISSION_DENIED) {Toast.makeText(this, "需要开启该相机和存储权限才能正常使用扫码功能!", Toast.LENGTH_SHORT).show();return;}}startDefaultScanMode();}}//扫码结果处理@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_SCAN_ONE) {//解析出扫码结果对象,并toast一下HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);if (obj != null) {Toast.makeText(this, obj.originalValue, Toast.LENGTH_LONG).show();}}}}

3.自定义扫码页面

等把页面整好看一点再放出来

4.同时识别多个二维码

本部分放在下一篇中介绍,正在总结中…

总结

以上是对自己使用华为统一扫码服务的一些总结,做个笔记,希望能帮到人

Android扫码功能--华为统一扫码服务相关推荐

  1. 华为统一扫码服务(Scan Kit)

    简介 华为统一扫码服务(Scan Kit)提供便捷的条形码和二维码扫描.解析.生成能力,帮助开发者快速构建应用内的扫码功能. 得益于华为在计算机视觉领域能力的积累,Scan Kit 可以实现远距离码或 ...

  2. Android 扫描二维码(使用华为统一扫码服务 + 附源码)

    前言   现在无论什么APP都会有一个扫一扫的功能,网络上的各个软件的扫码功能也都大同小异,当然你想要自定义属于自己APP的扫码界面及功能的话,还是要花一番功夫的,不过做Demo,用第三方的就可以了. ...

  3. @zxing/library实现平板手机扫码功能(二维码+条形码)

    1.使用插件 npm install @zxing/library 2.主要用到 BrowserMultiFormatReader 这个构造函数,用于打开摄像头 import { BrowserMul ...

  4. 华为鸿蒙源码有多少,华为鸿蒙源码下载-华为鸿蒙下载v2.0 正式版-西西软件下载...

    华为鸿蒙作为定制化的系统这两天应该霸屏了各个新闻专栏当中,作为华为自己的系统并且涉及到了方方面面,从手机到各种智能设备将全部的普及这个智能系统,并且在5G的加持之下真正的让万物进行互联,而不仅仅之时智 ...

  5. android 性格测试 csdn,华为加密状态码查询脚本

    fetch( "https://career.huawei.com/reccampportal/services/portal/portaluser/20190918/queryMyJobI ...

  6. android盲人模式功能,华为P9盲人模式功能介绍 华为P9手机 talkback使用图文教程...

    华为P9搭载的是基于安卓6.0深度定制的EMUI 4.1系统,很多人可能没有注意到P9手机系统辅助功能里面多了两个功能:TalkBack和开关控制.今天我们主要来说说TalkBack是什么,如何使用t ...

  7. 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...

    华为手机短信提醒设置方法 1)检查当前设置的默认短信应用是哪个应用. ①点击桌面"设置"图标②找到"应用程序管理" ③选择"默认应用设置"④ ...

  8. 华为设置android系统提醒功能,华为Watch GT智能手表怎么设置消息提醒功能

    华为最近上线发售了一款智能手表-Watch GT,这款产品可能是很多粉丝期待已久的了.而很多用户订购之后回去可能有些问题不会使用,比如怎么设置华为Watch GT的消息提醒功能.接下来小编给大家带来相 ...

  9. 华为设置android系统提醒功能,华为Watch GT2消息提醒怎么设置?短信微信消息提醒设置方法...

    华为Watch GT2是一款物美价廉的智能手表,同样也是一款非常实用的运动手表,那么华为watch gt2怎么设置消息提醒呢,为了不让大家错过手表上的短信.QQ和微信消息提醒,今天智能手机网小编就来分 ...

最新文章

  1. Java培训完可以应用在什么领域
  2. Oracle并行进程小结
  3. java set 空_Java面试总结(Map和Set)
  4. 信度效度难度区分度是什么意思_高考试题的效度信度区分度难度什么意思?
  5. Vector容器与Iterator迭加器
  6. 回溯法遵循深度优先吗_闲来刷下「回溯算法」
  7. NFS文件锁一致性设计原理解析
  8. 前端小知识点(10):原型链
  9. 杀毒软件杀毒后桌面图标为什么都成打开方式了
  10. 将python算法转为scala_将Python转换为scalaasp
  11. python简单例子lof_Python的净值数据接口调用示例分享
  12. 2Do for Mac(任务管理GTD工具)
  13. 谷歌浏览器书签丢失,恢复工具
  14. 心上莲花:佛教简介(上)
  15. [精简]托福核心词汇37
  16. 探索AI时代的架构设计,一场千人面基大会即将开启!
  17. 如何选择适合你的兴趣爱好(十),排球
  18. 爱快可以外接文件服务器吗,听说爱快路由器也支持NAS了?
  19. 【转】Ceph对象存储(rgw)的IPv6环境配置
  20. C++继承以及菱形继承

热门文章

  1. Pycharm导入同级目录模块解决办法汇总
  2. Buffon投针实验:究竟为什么是pi?
  3. 头歌-EduCoder:袋鼠过河问题
  4. 企业上市需要哪些条件
  5. 鼠标灵敏度调多少合适
  6. 【经验】为什么Android手机连接USB后查看手机内部图片有些有缩略图,有些显示图标?
  7. allow_url_fopen和allow_url_include详解
  8. 怎么把视频中的音频提取成mp3?
  9. Linux基础知识总结 一
  10. 电脑调分辨率黑屏了怎么办_电脑调分辨率黑屏了怎么办