前言

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

正文

效果图

① 创建Android项目



创建好了。

②配置HMS SDK的maven仓库地址

打开工程目录下的build.gradle文件

a. 在allprojects ->repositories里面配置仓地址

allprojects { repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } }

b. 在buildscript->repositories里面配置HMS SDK的maven仓地址

buildscript { repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } }

c.在buildscript ->dependencies里面增加配置。

buildscript{ dependencies { classpath 'com.huawei.agconnect:agcp:1.2.1.301' } }

增加后如下图,只改动增加的,其他不动。

③ 添加编译依赖

打开应用级的build.gradle文件

引用SDK,Scan Kit提供两种SDK,您可以根据需求选择合适的SDK,

 implementation 'com.huawei.hms:scan:1.1.3.301'//对SDK大小敏感的开发者implementation 'com.huawei.hms:scanplus:1.1.3.301'//对SDK大小不敏感且希望所有机型均具备最佳体验的开发者

怎么看都是这个带了plus的牛逼一些,是因为scan对于非华为手机使用普通识别模型,而scanplus对非华为手机使用增强识别模型,虽然你感觉不到,不过就用plus了。

dependencies{ implementation 'com.huawei.hms:scanplus:1.1.3.301'}

在文件头添加配置

apply plugin: 'com.huawei.agconnect'


重新打开修改完的build.gradle文件,右上方出现“Sync Now”链接。点击“Sync Now”等待同步完成。如果出现错误,请检查网络连接是否正常,以及检查gradle文件是否正确。

④ 配置AndroidManifest.xml

打开AndroidManifest.xml文件

申请静态权限

 <!--相机权限--><uses-permission android:name="android.permission.CAMERA" /><!--读文件权限--><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--使用特性--><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" />

在application标签内添加对扫码页面的声明

<activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" />

⑤ 实现功能

a. 修改activity_main.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"android:gravity="center"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/btn_scan"android:layout_width="match_parent"android:layout_height="60dp"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:text="扫一扫" /></LinearLayout>

b. 添加标识和动态权限申请

 public static final int CAMERA_REQ_CODE = 111;public static final int DECODE = 1;private static final int REQUEST_CODE_SCAN_ONE = 0X01;

在启动扫码Activity的地方添加动态权限申请

 //权限请求public void loadScanKitBtnClick(View view) {requestPermission(CAMERA_REQ_CODE, DECODE);}//编辑请求权限private void requestPermission(int requestCode, int mode) {ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE},requestCode);}

c. 在权限申请返回中启动扫码界面

 //权限申请返回@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {if (permissions == null || grantResults == null) {return;}if (grantResults.length < 2 || grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) {return;}if (requestCode == CAMERA_REQ_CODE) {//启动扫描ActicityScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, new HmsScanAnalyzerOptions.Creator().create());}}

d. 在Activity回调中获取扫描码的结果

 //Activity回调@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) {HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);if (obj != null) {Toast.makeText(this,obj.originalValue,Toast.LENGTH_SHORT).show();}}}

e. 修改activity_main.xml

android:onClick="loadScanKitBtnClick"

⑥ 运行起来


当然还有很多效果,你要自己去发掘

⑥ 源码

GitHub源码地址:ScanDemo
CSDN资源地址:ScanDemo.rar

Android 扫描二维码(使用华为统一扫码服务 + 附源码)相关推荐

  1. 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)

    需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...

  2. Android 扫描二维码(Scan Kit)

    Android 扫描二维码(Scan Kit) 华为统一扫码服务(Scan Kit)能够提供专业的二维码与条形码扫描与解析能力,通过集成Scan Kit,帮助应用快速构建扫码功能. 统一扫码服务的功能 ...

  3. Android扫描二维码 实现 登录网页

    工程代码:ScanQRcode.zip ------------------------------------------------------------------ 1. 扫描二维码登录的实现 ...

  4. Android 扫描二维码 以及优化方面相关知识

    优化zxing 扫描二维码出现卡顿 扫描慢等现象:解决方案 :解决办法很简单,就是不仅仅使用聚焦框里的图像数据,而是采用全幅图像的数据.public PlanarYUVLuminanceSource ...

  5. 解决android扫描二维码时,用户禁止权限报错问题

    当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能.组长说如果用户禁止调用摄像头,那程序也不能崩溃.结果我一运行就崩溃了.在网上自己找了找,可以这样解决. try { m ...

  6. Android扫码功能--华为统一扫码服务

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.华为统一扫码服务是什么? 二.使用步骤 1.准备工作 2.开启扫码功能 3.自定义扫码页面 4.同时识别多个二维码 ...

  7. android序列帧动画纯代码,H5序列帧动画实现过程(附源码)

    H需朋者说上事是础一发一开程和开数的目前间5序列帧动画实现过程(新直能分支调二浏页器朋代说,事刚附源码) 序列帧动画 序列帧.轻厅设近幸松.备近幸松.备近幸松.备近动画,又称为逐帧动画,是使用多张连续 ...

  8. Android一行代码实现网络加载GIF闪图(附源码)

    最近项目有个需求是要从网络加载GIF闪图, 但是Android原生的ImageView并不支持Gif... 于是从网上看了些Dome, 发现总是有些这样那样的问题, 譬如: ☹ 没有缓存,还要自己写一 ...

  9. 【Spring AOP】@Aspect结合案例详解(二): @Pointcut使用@within和within(已附源码)

    文章目录 前言 @within 完善打印日志案例 @within深入说明 within 匹配指定类 匹配指定包(package) 源码下载 总结 前言 在微服务流行的当下,在使用Spring Clou ...

最新文章

  1. 高阶程序员之路-轻松学习分布式锁
  2. 广州那所大学有自考计算机专业,广州自考本科大学有哪些
  3. 一文读懂「Attention is All You Need」| 附代码实现
  4. MySQL集群搭建--多主模式
  5. echarts自适应父div大小
  6. WCF技术剖析之十七:消息(Message)详解(上篇)
  7. VMware vCloud与Zend Server实现PHP应用程序自动化交付
  8. Notepad++ 使用心得
  9. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
  10. 有道精品课数据中台建设实践
  11. Android学习笔记(十七)——使用意图调用内置应用程序
  12. 华为推送:应用中的百度地图jar包和华为Push SDK中的百度地图相冲突
  13. 关于在手机上注册Google账号
  14. 项目知识管理体系指南阅读(2)
  15. 99计数器c语言,数字显示00-99计数器
  16. 【转载】参数返回值及NRV优化
  17. ftp 服务器管理工具,5款最好用的ftp 服务器管理工具
  18. 历史总是在重演,AI寒冬或再来
  19. DDR 内存基础知识(2)- DDR预取
  20. ZeroSSL:又一款免费申请SSL证书的利器

热门文章

  1. 统计给定的n个数中,负数,零和正数的个数。
  2. java查询ftp路径下所有文件名字
  3. mybatis countByExample Total: 1 返回 0
  4. 错觉图:考考你的眼力
  5. discuz当qq绑定超过5个网址时 如何解除绑定qq
  6. HTMLday2旅途
  7. 使用裁切技巧,去除视频上下黑边,保持视频画面不变形播放
  8. 【JokerのZYNQ7020】QSPI启动。
  9. UVA 1471 Defense Lines 单调队列优化
  10. LayaAir基础(7) 之 .ani动画文件