Android扫描二维码信息

调用华为的scanplus库做二维码扫描

1.在项目的build.gradle文件中添加华为的maven开发库地址,文件内容如下。buildscript 和allprojects 节点的repositories 节点内都添加了。

maven {url 'http://developer.huawei.com/repo/'}

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {google()jcenter()maven {url 'http://developer.huawei.com/repo/'}}dependencies {classpath 'com.android.tools.build:gradle:3.5.2'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}def releaseTime() {return new Date().format("yyyy-MM-dd",java.util.TimeZone.getTimeZone("UTC"))
}allprojects {repositories {google()jcenter()maven { url 'https://jitpack.io' }maven { url 'http://developer.huawei.com/repo/'}}ext {compileSdkVersion = 30buildToolsVersion = "30.0.3"minSdkVersion = 19targetSdkVersion = 30}
}task clean(type: Delete) {delete rootProject.buildDir
}

2.app的build.gradle文件中添加库的依赖,文件内容如下,文件中的其他部分省略了。

implementation 'com.huawei.hms:scanplus:1.1.1.301'

apply plugin: 'com.android.application'android {...
}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])...//implementation project(path: ':Venus')api 'com.gitee.premeditate:VenusAndroid:V1.0.22'//二维码扫描库implementation 'com.huawei.hms:scanplus:1.1.1.301'
}

3.在AndroidManifest.xml清单文件中声明扫描二维码的Activity和相关权限,文件内容如下。无关的内容省略。

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

<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" />

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="org.venus.mpeqi"><!--相机权限--><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" /><applicationandroid:name="org.venus.library.app.LibraryApplication"android:allowBackup="true"android:icon="@drawable/icon_app"android:label="@string/app_name"android:roundIcon="@drawable/icon_app"android:supportsRtl="true"android:theme="@style/NoTitleBar"><activityandroid:name=".ui.activity.LoginActivity"android:screenOrientation="userLandscape"android:windowSoftInputMode="stateHidden"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!--对扫码页面进行声明--><activity android:name="com.huawei.hms.hmsscankit.ScanKitActivity" /></application></manifest>

4.在调用扫码功能处按照如下函数执行

调用事件

扫码功能的按钮点击事件,在这里去申请扫码权限

/*** 扫描二维码*/
private void scan() {requestPermission(CAMERA_REQ_CODE, 1);
}

请求权限

笔者在这里不调用动态申请权限。在设备中手动允许应用的相机权限但是仍不能扫码,所以这里必须动态申请一次相机权限。

private void requestPermission(int requestCode, int mode) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, requestCode);
}

请求权限结果

权限请求结果,如果拒绝权限就不能继续执行,允许权限就可以启动扫码界面进行扫码。

@Override
public 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) {ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE).create());}
}

扫码结果

扫码结果拿到的是HmsScan对象,通过打印可以看到二维码的基本数据大概是如下结构的。可以通过HmsScan对象的originalValue属性拿到二维码的主要信息进行业务处理,如果扫描的二维码与你的业务无关,可以做个简易的提示并不处理这次扫描,如果是你系统的信息就执行你的业务。

@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) {HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
//            System.out.println(new Gson().toJson(obj));System.out.println(obj.originalValue);try {QRCode qrCode = new Gson().fromJson(obj.originalValue, QRCode.class);if (!QRCode.TITLE_DEFAULT.equals(qrCode.title)) {ToastUtil.show(this, "二维码标识信息不正确");return;}queryEquipmentInfoByNumber(qrCode.number);} catch (Exception e) {ToastUtil.show(this, "请扫描移动便携设备二维码");}}
}

二维码数据结构

{"HMS_SCAN_VERSION": 3,"cornerPoints": [{"x": 691,"y": 1080},{"x": 328,"y": 855},{"x": 544,"y": 492},{"x": 915,"y": 715}],"linkUrl": {"linkvalue": "https://u.wechat.com/EDTLAmRNzshSMzp21uQ4kBM","theme": ""},"originValueByte": [66,-58,-121,71,71,7,51,-94,-14,-9,82,-25,118,86,54,-122,23,66,-26,54,-10,-46,-12,84,69,68,-60,22,-43,36,-25,-89,54,-123,52,-41,-89,3,35,23,85,19,70,-76,36,-48],"originalValue": "https://u.wechat.com/EDTLAmRNzshSMzp21uQ4kBM","scanType": 1,"scanTypeForm": 1006,"showResult": "https://u.wechat.com/EDTLAmRNzshSMzp21uQ4kBM","zoomValue": 0.0
}

业务

拿到扫描结果后执行你自己的业务

private void queryEquipmentInfoByNumber(String number) {Common.queryEquipmentByNumber(this,number);
}

5.截图

这是程序界面,点击右上角的扫码按钮,执行扫码函数

Screenshot_20220421_101019_org.venus.mpeqi.jpg

扫码界面,如果是第一次扫码会提示申请权限,选择允许就好。扫码界面出现二维码后会很快识别到二维码信息并退出。

Screenshot_20220421_101043_org.venus.mpeqi.jpg

扫描到二维码数据解析后进行业务处理,笔者这里就是扫描到系统内的设备信息并显示。

Screenshot_20220421_101107_org.venus.mpeqi.jpg


http://www.taodudu.cc/news/show-4015588.html

相关文章:

  • Android - BGAQRCode 扫描二维码生成二维码
  • Opencv项目实战:03 扫描二维码条形码
  • 微信开发者工具模拟扫描二维码调试
  • Unity 扫描 二维码
  • Vue 扫描二维码、条形码
  • 线性地址和物理地址
  • 物理地址介绍
  • 物理地址是怎么确定的?以8086为例
  • 虚拟地址如何访问到物理地址
  • 7.物理地址(MAC地址)是什么?
  • 苹果公司:苹果商店App价格将调整 多个国家地区受影响
  • 苹果手机怎么关闭爱奇艺自动续费_爱奇艺回应涨价为用户创造优质服务,小编建议用户先关闭自动续费...
  • 苹果六电池_苹果新产品发布,这次加量不加价!
  • 苹果手机几月份最便宜_苹果手机越来越便宜了么?目前看来确实是这样的!
  • 销量持续下跌涨价或许会让苹果业绩雪上加霜
  • 苹果,忘了发家的根本…
  • 刚刚创下新高的苹果再度自傲,iPhone14提价必将遭受挫败
  • 当苹果逐渐小米化
  • 苹果的傲慢与堕落,从iPhone XS的发布谈起!
  • 国产手机提价终遭受重大损失,降价的苹果反而逆势增长
  • 你别不信,安卓机用户才是苹果机涨价的最大受害者
  • 苹果macbookpro多少钱_买一套可用的苹果全家桶,要花多少钱?
  • java定义苹果类Apple_Java开发笔记(七十)Java8新增的几种泛型接口
  • 苹果手机几月份最便宜_苹果手机越来越便宜,安卓手机越来越贵,果真是这样吗?...
  • java 苹果cms 萌果_苹果maccms8x最新程序会员中心全新美化171模板分享
  • 苹果市值破万亿,iPhone 会涨价吗?
  • pacman使用介绍
  • pacman安装ubuntu_pacman命令 – 软件包管理器
  • manjaro pacman 使用方法总结
  • pacman+s+java_ArchLinux pacman安装openjdk

2022-04-21 Android开发扫描二维码相关推荐

  1. Android之扫描二维码和根据输入信息生成名片二维码

    开发中常常遇到二维码扫码操作,前段时间做项目要实现该功能,于是网上查找资料实现了,现在把他做出来给各位分享一下,主要包含了二维码扫描和生成二维码名片, 先来看看效果图:   生成的二维码,打开微信扫一 ...

  2. Android与JS混编(js调用android相机扫描二维码)

    参考demo http://www.cnblogs.com/mythou/p/3280023.html        项目源码: https://github.com/weifengzz/Androi ...

  3. android Zxing扫描二维码和一维码

    https://www.jianshu.com/p/e3dd6f9f4601    引用链接

  4. 扫描二维码下载app,判断是Android还是ios,并跳转到不同的下载地址

    写在前面 通常,我们开发一个app,有Android版本,有ios版本,但是,我们有时候只有一个二维码可以放置,比如,通过社会化分享,分享到微信一张图片,通过微信识别二维码来下载我们的app,此时,只 ...

  5. 扫描二维码下载app,判断是Android还是ios,并跳转到不同的下载地

    写在前面 通常,我们开发一个app,有Android版本,有ios版本,但是,我们有时候只有一个二维码可以放置,比如,通过社会化分享,分享到微信一张图片,通过微信识别二维码来下载我们的app,此时,只 ...

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

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

  7. 使用zxing包生成和扫描二维码和一维码

    在开发之前要先下载zxing包对其简化,新建一个android工程,把zxing包中的android和android-code中的文件复制到相应的文件夹里面 其中的libs文件夹里需要zxing包中的 ...

  8. Android平台下二维码漏洞攻击杂谈

    路人甲 · 2015/12/02 12:42 0x00 前言 现在Android App几乎都有二维码扫描功能,如果没有考虑到二维码可能存在的安全问题,将会导致扫描二维码就会受到漏洞攻击,严重的可能导 ...

  9. Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细

    Android安卓开发中集成微信二维码登录的步骤: 写在前面的: 该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源.在最后,我会附上这个Activity的 ...

  10. Android开发——Android中的二维码生成与扫描

    0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描.本篇旨在帮助有需求的同学快速完成二维 ...

最新文章

  1. Java培训完可以应用在什么领域
  2. day88 Vue基础
  3. 【django】创建模型类
  4. ClickHouse高可用及副本测试
  5. java 反射 单例类_利用反射机制破坏单例模式
  6. 前端调用后端接口 xhr 只看到一次 实际调用两次_持续演进的接口自动化测试方案...
  7. [改善Java代码]避免对象的浅拷贝
  8. 易语言执行mysql命令_易语言执行sql进度条 易语言mysql
  9. 用python 把视频转换为图片
  10. 活体检测 Domain Generalization via Shuffled Style Assembly for Face Anti-Spoofing 论文学习记录
  11. 访问计算机是什么意思,“CATI”是什么意思?
  12. 黑马前端案例——模拟京东显示密码
  13. 什么是堆漏洞挖掘?堆的glibc实现、Arena(main_arena、thread_arena)
  14. 国内外开源商城系统盘点
  15. JavaScript常用代码集锦
  16. Vue项目生产环境解决跨域问题
  17. 数字图像处理课程(作业+实验+大作业)相关文章 传送门
  18. 毕业生自传(浴血奋战)
  19. 知识付费与知识焦虑症
  20. 鸿蒙窍什么意思,庄子南华_04.人间世:德荡乎名知出乎争

热门文章

  1. 观《五星大饭店》有感
  2. Python一步实现静态图片动态化
  3. 为什么文本框里的字只显示一半_Word文本框文字显示不全、无法选择、不能编辑调整大小和跨页,怎么解决...
  4. Java 读取Word文本框中的文本/图片/表格
  5. 深度解析dubbo在线运维Qos
  6. Web前端技术课后作业
  7. 解决jsp页面引入百度编辑器,出现xss漏洞
  8. 【python 去除文件名后缀或提取后缀】
  9. MacBook Pro 设置Finder显示隐藏文件
  10. 我的第一本书,被选作大学教材了!