Android | 带你零代码实现安卓扫码功能

摘要:
android studio使用早期准备开发工具。使用过android studio的人会直接忽略它们。有关未使用的工具,请参阅:https://developer.android.com/studio有关安装程序,请参阅以下内容:https://www.cnblogs.com/xiadewang/p/7820377.html 。 最重要的是,华为的扫码服务覆盖了所有安卓机型,这太棒了!

目录
小序

  这是一篇纯新手教学,本人之前没有任何安卓开发经验(尴尬),本文也不涉及任何代码就可以使用一个扫码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:codelabCodelab_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 | 带你零代码实现安卓扫码功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇c3p0配置详解springboot 2.x版本Redis设置JedisConnectionFactory下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[201020] Manjaro(KDE桌面环境)小白向完全安装教程(附Linux简要介绍)

本文并非网上常见的安装试错文,这一点还请读者大可放心。 本文力求做到手把手教学,尽量为系统安装过程中每个步骤给出截图并做出必要的说明。不过即便如此也难免有疏漏之处,到时还请读者自行咨询搜索引擎。在Linux的使用过程中一定会遇到各种各样的问题,搜索引擎永远是你最好的伴侣。 基础知识 不需这些知识,想要直接按步骤安装系统的读者可以直接跳过本节。 开始教程前首...

C# 程序软件启动默认管理员权限。

在vs的Properties目录中找到 app.manifest,将其中level="asInvoker" 改成 level="requireAdministrator"就可以了,如果没有app.manifest文件可以打开项目属性,找到“安全性”,勾上“启用 ClickOnce 安全设置”,会生成app.manifest文件,然后再把勾去掉这样你重新编译...

Android视频播放和横竖屏切换

  最近做了一个项目,里面用到了视频播放这一块,当时想考虑Vitamio,demo也做了出来,但是后来发现它是商业收费的,并且收费相当可观,所以只能放弃了。然后找到了ijkPlayer,功能也很强大,最终选择了Wei_Leng基于ijkPlayer开发的superPlayer,在这里也要感谢一下这位无私的博主,贴下他的链接superPlayer 但是因为...

[IPA]IOS In App Purchase(内购)验证

参考我之前的笔记 苹果内购笔记,在客户端向苹果购买成功之后,我们需要进行二次验证。 二次验证 IOS在沙箱环境下购买成功之后,向苹果进行二次验证,确认用户是否购买成功。 当应用向Apple服务器请求购买,成功之后,Apple会返回以下四个数据给应用 四个验证数据 productIdentifier:cosmosbox.strikehero.gems60...

Win10解除UWP应用网络隔离从而允许访问代理

前言 当开启代理时,win10的uwp应用无法联网。其根本原因是UWP沙箱环境默认不与本地网络联通。 默认情况下,Windows Metro内置UMP应用是不允许访问localhost的,所以会导致无法通过代理添加Gmail邮箱、Microsoft Store无法联网等。通过Windows 10自带的CheckNetIsolation.exe程序可以解除网...

Android 开发 VectorDrawable 矢量图 (八)animation-list帧动画配合矢量图实现动画

前言  只是矢量图的一个使用小技巧,关键点是<aapt:attr name="android:drawable"> 属性,它其实是代替<item 里的android:drawable属性。理解它,你可以举一反三使用到更多的需要实现动画,按下效果,选择效果的xml文件上,比如一个实现按下效果的xml将原来需要3个xml文件合并成一个xml文...