Android 扫描二维码(使用华为统一扫码服务 + 附源码)
前言
现在无论什么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 扫描二维码(使用华为统一扫码服务 + 附源码)相关推荐
- 【Python机器学习】PCA降维算法讲解及二维、高维数据可视化降维实战(附源码 超详细)
需要全部代码请点赞关注收藏后评论区留言私信~~~ 维数灾难 维数灾难是指在涉及到向量计算的问题中,当维数增加时,空间的体积增长得很快,使得可用的数据在空间中的分布变得稀疏,向量的计算量呈指数倍增长的一 ...
- Android 扫描二维码(Scan Kit)
Android 扫描二维码(Scan Kit) 华为统一扫码服务(Scan Kit)能够提供专业的二维码与条形码扫描与解析能力,通过集成Scan Kit,帮助应用快速构建扫码功能. 统一扫码服务的功能 ...
- Android扫描二维码 实现 登录网页
工程代码:ScanQRcode.zip ------------------------------------------------------------------ 1. 扫描二维码登录的实现 ...
- Android 扫描二维码 以及优化方面相关知识
优化zxing 扫描二维码出现卡顿 扫描慢等现象:解决方案 :解决办法很简单,就是不仅仅使用聚焦框里的图像数据,而是采用全幅图像的数据.public PlanarYUVLuminanceSource ...
- 解决android扫描二维码时,用户禁止权限报错问题
当我用ZBarDecoder.jar写了一个扫描二维码的程序,确实实现了扫描功能.组长说如果用户禁止调用摄像头,那程序也不能崩溃.结果我一运行就崩溃了.在网上自己找了找,可以这样解决. try { m ...
- Android扫码功能--华为统一扫码服务
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.华为统一扫码服务是什么? 二.使用步骤 1.准备工作 2.开启扫码功能 3.自定义扫码页面 4.同时识别多个二维码 ...
- android序列帧动画纯代码,H5序列帧动画实现过程(附源码)
H需朋者说上事是础一发一开程和开数的目前间5序列帧动画实现过程(新直能分支调二浏页器朋代说,事刚附源码) 序列帧动画 序列帧.轻厅设近幸松.备近幸松.备近幸松.备近动画,又称为逐帧动画,是使用多张连续 ...
- Android一行代码实现网络加载GIF闪图(附源码)
最近项目有个需求是要从网络加载GIF闪图, 但是Android原生的ImageView并不支持Gif... 于是从网上看了些Dome, 发现总是有些这样那样的问题, 譬如: ☹ 没有缓存,还要自己写一 ...
- 【Spring AOP】@Aspect结合案例详解(二): @Pointcut使用@within和within(已附源码)
文章目录 前言 @within 完善打印日志案例 @within深入说明 within 匹配指定类 匹配指定包(package) 源码下载 总结 前言 在微服务流行的当下,在使用Spring Clou ...
最新文章
- 高阶程序员之路-轻松学习分布式锁
- 广州那所大学有自考计算机专业,广州自考本科大学有哪些
- 一文读懂「Attention is All You Need」| 附代码实现
- MySQL集群搭建--多主模式
- echarts自适应父div大小
- WCF技术剖析之十七:消息(Message)详解(上篇)
- VMware vCloud与Zend Server实现PHP应用程序自动化交付
- Notepad++ 使用心得
- C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
- 有道精品课数据中台建设实践
- Android学习笔记(十七)——使用意图调用内置应用程序
- 华为推送:应用中的百度地图jar包和华为Push SDK中的百度地图相冲突
- 关于在手机上注册Google账号
- 项目知识管理体系指南阅读(2)
- 99计数器c语言,数字显示00-99计数器
- 【转载】参数返回值及NRV优化
- ftp 服务器管理工具,5款最好用的ftp 服务器管理工具
- 历史总是在重演,AI寒冬或再来
- DDR 内存基础知识(2)- DDR预取
- ZeroSSL:又一款免费申请SSL证书的利器