Android | 带你零代码实现安卓扫码功能
小序
这是一篇纯新手教学,本人之前没有任何安卓开发经验(尴尬),本文也不涉及任何代码就可以使用一个扫码demo,华为scankit真是新手的福音……
背景介绍
最近被导师要求做一个购物收费的app,毕设好难呀~ 网上找了半天全是zxing,但是扫码效果真是有点小垃圾,无奈只能继续寻寻觅觅……突然发现网上有篇讲集成hms的文章,稍微借鉴了一下。由于在下是安卓小白,全篇没有一点代码,只是搬运一下华为网站的codelab,抱着忐忑的心情,竟然可以一键运行……
前期准备
开发工具用的是android studio
用过android studio的人直接忽略,没用过的可以参考:https://developer.android.com/studio
相关的安装流程可以参考:https://www.cnblogs.com/xiadewang/p/7820377.html。
zxing和华为扫码服务对比
回到我们的主题上—扫码,我在选择扫码库的时候,首先接触到的是google的开源库ZXing,也上手进行了实操,可以说集成过程还是蛮简单的,但是针对我本身的业务场景和需求,识别率上还是不够达标,自动对焦能力也不具备,不能够达到即开即用的要求,所以我就继续进行了调研,就了解到了华为的一个扫码服务,按照网站上的一些指引,20分钟就搞出来一个小demo,然后就真香,能够自定义UI界面,还能够自动对焦,对于一些有反光,有污损,形变,超远距离的场景都能很好地识别。特来分享,码字不易哦。最主要的是华为扫码服务是安卓全机型覆盖,太棒惹!~
开始搬运
当前华为开发者网站上有一个叫做codelab的东西,链接我在下面分享了,亲测可用哦https://developer.huawei.com/consumer/cn/codelab/ScanKit-DefaultView/index.html#0
1. 进来以后页面是这样的,一堆废话,密密麻麻的,可以略过。

2. 说了使用的工具和版本,注意,android4.4,新下Android studio的朋友们可以略过,小哥哥们可能需要更新一下。
3. 直接下载sample code,talk is cheap, show me the code。

4. 打开android studio,在file下拉菜单中找到open,选择刚刚解压好的文件目录,在我这里是D:\codelab\Codelab_ScanKit_DefaultView_Full_Demo。然后跳出来这个玩意,直接ok过掉。

5. 在左侧的菜单栏中如果上面是一个小机器人,可以下拉选择一下为project为了保持以下统一,如果有经验的可以忽略这步。

6. 这里在app这个目录下会发现有个叫agcconnect.json的奇怪文件,这个文件是在华为官网上注册自己的账号以后生成的,这个文件主要是为了起到云端校验的功能,因为扫码是纯端侧的服务,因此这里只集成扫码服务的话可以直接删除,不影响使用。

7. 细细研究了一下文档发现scankit提供了两种sdk,一种是大的3.3mb,一种是小的0.7mb,大的小的在华为手机上效果一样,但是大的在非华为手机上也有很好的效果。所以果断选择大的sdk。
首先需要进入app目录下的build.gradle。

然后找到最后,将scan替换成scanplus。

8.点击下图中标红的图标(云下有个箭头),静静等待一杯咖啡的时间,发现底下全部都是绿勾以后就大功告成了。

9.我这里准备了一个华为手机,迫不及待地运行了一下。

10.运行之后效果很棒,无论拉近拉远,反光,模糊,污损效果下都很出色,而且不再需要自己写zxing操蛋的自动缩放了。完美!

细细研究了一下代码,发现代码很简单,点击进入mainactivity之后就能看清楚这个app在干嘛了。

品了一下代码发现所有的东西都给封装好了,在回调函数中返回了识别的结果。稍微改吧一下就添加到我的工程里面了,大功告成,美滋滋。
if (requestCode == REQUEST_CODE_SCAN) {
Object obj = data.getParcelableExtra(ScanUtil.RESULT);
if (obj instanceof HmsScan) {
if (!TextUtils.isEmpty(((HmsScan) obj).getOriginalValue())) {
Toast.makeText(this, ((HmsScan) obj).getOriginalValue(), Toast.LENGTH_SHORT).show();
}
return;
}
}
结语
做完集成之后又回去看了一下开发者文档,内容很多,发现scankit的能力比想象中的还要强大,提供了默认扫码模式,自定义模式,多码识别模式,还可以生成码,详细的我会在接下来的文档中继续po出。
往期链接:Android | 教你如何使用HwCameraKit接入相机人像模式
内容来源:https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201211373637380068
原作者:Wisteria
Android | 带你零代码实现安卓扫码功能的更多相关文章
- ionic3 实现扫码功能
ionic3 通过插件phonegap-plugin-barcodescanner,调用机器硬件摄像头实现扫码功能. 首先当然先了解下 phonegap-plugin-barcodescanner,这 ...
- vue移动app扫码功能
第一步: 上面这段代码写在index.html里面,我也不知道为什么,可能是全局的关系: 第二步: 定义一个按钮,点击启动扫码功能,另外再定义一个盒子来当做扫码的容器:我给这个盒子定义了一个id类名: ...
- 微信小程序实现连续扫码功能(uniapp)
注:本文使用的是 uniapp 语法. 微信小程序提供了扫码API:wx.scanCode,但它只能扫一次码,想要实现连续扫码,需要借用 camera 组件.camera 组件不仅能拍照,还具有扫码功 ...
- 安卓扫码:简单的ZXing使用记录
ZXing是Google提供的条形码.二维码等的生成.解析的库.最近工作需求去研究了一下,主要是研究怎么扫描二维码(QRCode).网上教程也不少,但大多看了不明所以,甚至看了半天都不知道解码到底从哪 ...
- 教你如何使用零代码开发的Foreach循环功能代替for循环
使用技巧:Foreach循环功能! 项目中为了避免将同样的语句重复写很多次,相信大家在编程过程中肯定用过循环语句.其中For循环作为基础中的基础,大家一定不会陌生.不过今天小V要讲的可不是For循环, ...
- PHP--------微信网页开发实现微信扫码功能
今天说说微商城项目中用到的扫一扫这个功能,分享一下,希望对各位有所帮助. 前提:要有公众号,和通过微信认证,绑定域名,得到相应信息,appid,appsecret等. 微信开发文档:https://m ...
- Ionic4 Cordova 调用原生硬件 Api 实现扫码功能
QR Scanner 速度快,样式随心所欲,默认只能扫二维码 https://ionicframework.com/docs/native/qr-scanner/ 安装插件 ionic cordova ...
- vue项目中实现扫码功能
项目地址:https://github.com/wkl007/vue-scan-demo.git 项目主要是做的一个扫码的功能 核心代码为 <div class="scan" ...
- 配置微信api调扫码功能
var url = encodeURIComponent(location.href.split('#')[0]); $.get(iapi+'/htweb/wx/getJsSdkSign?url='+ ...
随机推荐
- Linux远程登陆
Linux 远程登录 Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器. 这时我们就需要远程登录到Linux服务器来管理维护系统. Linux系统中是通过ss ...
- mysql 主键和默认 设为索引的规则
一.mysql 表中如果是单主键的话,那这个主键也会被 系统默认建为 索引 二.mysql 表中如果是复合主键的话,那系统会遵循左对齐原则,即如复合主键 a 和 b字段和c字段..., 默认建的主键索 ...
- 【python实现卷积神经网络】激活层实现
代码来源:https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride.padding)的具体实现:https ...
- E - Dividing Chocolate ATcoder
题目大意:切割图形,给你一个非0即1的矩阵,将它切割成多个长方形,使每个小长方形中1的个数不得多于k个,切割的规则,要么切一整行,要么是一整列. 题解: 二进制枚举. 注意行数最大才是10.用二进制枚 ...
- 详解 Set接口
(请关注 本人"集合"总集篇博文--<详解 Collection接口>) 在Collection接口的子接口中,最重要的,也是最常见的两个-- List接口 和 Set ...
- linux之cat 操作
1.查看或创建 cat 1.txt #如果目录有这个文件则会打开查看,没有则会创建 2.压缩空白 cat 1.txt 我是第一行 我是第二 行 cat -bs 1.txt # 变成 cat 1.txt ...
- 4. css事件
可通过使用css伪类实现点击元素变色的效果,两个伪类是:active, :focus :active :active选择器用于选择活动链接.当在一个链接上点击时,它就会成为活动的(激活的),:acti ...
- Java 多线程 -- 指令重排(HappenBefore)
指令重排是指:代码执行顺序和预期不一致. 代码运行一般步骤为: 1.从内存中获取指令解码 2.计算值 3.执行代码操作 4.把结果写回内存 而写回内存的操作比较耗时,CPU为了性能,可能不会等它完成, ...
- 关于mysql的范式——反范式的思路
数据库的设计,是有模式的,就是在实际生产的项目中,按照怎样怎样步骤的去做.减少冗余呀,一对多呀等等. 那么回归到一个问题:数据库究竟是为了添加,还是为了查询?这个问题有些轴,以 增删改查四律而言,都是 ...
- mac使用brew安装mysql5.7
安装mysql5.7 brew install mysql@5.7 设置环境变量(可能安装完自动生成过了,可以cat ~/.zshrc看一下,有了就不用添加了 ) echo 'export PATH= ...