本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。

相信二维码扫描现在大家都已经不稀奇了,几乎所有的App里都会支持这个功能。

这里我要问大家一个问题,你们都是如何在自己的App中加入二维码扫描功能的呢?

相信会有一大部分朋友说,使用的是ZXing或者ZBar这种开源库。

但是不知道大家有没有思考过,二维码功能这么常见,为什么Google却没有提供一个官方的二维码扫描库呢?

反正我是没思考过。有需求,找开源,这可能已经成了很多Android开发者的常态化思维。

但令我没想到的是,官方的二维码扫描库,它真的要来了。

由于我是Google的GDE,有的时候可以提前体验到一些Google还未正式对外开放,仍在开发当中的API。

就在不久之前,我收到了一封Google发来的邮件,内容如下:

当我看到邮件里提到了Google官方要推出一个二维码、条形码扫描库时,我立刻被吸引到了,并且跟Google表达了我想尝鲜的意愿。

几经折腾之后,我终于将这个库的一整套流程跑通了。总体来说,体验还不错,有优点也有缺点,下面我来逐条分析。

第一个优点是,API非常简单,傻瓜式接口,初学者都会用。比起ZXing和ZBar的学本成本要低很多。

其次,更加保护用户隐私性。因为它的功能实现是基于Intent机制委托Android系统来调起手机摄像头的,系统扫描出结果之后再将信息返回给我们,这样我们就不用在自己的App当中去申请摄像头权限了。

至于缺点的话,最大的问题就是,它依赖于Google Play Service,所以对于国内手机而言的话,基本就是完全无法使用的(不过下文也有其他解决方案)。而如果你们的产品是面向海外市场的话,这条就算不上什么缺点了。

另外我测试了一下,二维码的识别效率不算很高,至少目前跟微信的识别效率是没法比的。但是毕竟后期升级维护都是靠Google,服务有保障,相信以后识别效率会有显著的提升。

优缺点就介绍到这里吧,如果你对这个库感兴趣,也想跟我一样尝鲜的话,那么本篇文章接下来的内容就是教你如何集成并使用这个库来进行二维码扫描。

首先确保你的手机有安装Google Play Service,并且版本在21.45.15以上,不然后面的代码是跑不通的。

另外这个库暂时还没有上线,所以不能通过在线maven仓库的方式集成到我们项目当中。而是要先将这个库下载到本地,再通过本地maven仓库的方式集成进来。

我们一步步操作。

这个库的下载地址本来是在Google Drive上的,但是由于需要权限才能访问下载,所以我将它上传到了百度网盘上共享给大家。

链接: https://pan.baidu.com/s/13nhR3ZXsa9ELBIX6giUCQg 提取码: gfs8

下载完成后,在你电脑的当前登录用户目录下创建一个.m2/repository目录,并将下载好的库移到这个目录当中解压(注意解压后的顶层目录必须是com目录)。

Linux或Mac用户可以使用以下命令完成上述操作,Windows用户请手动操作。

mkdir -p ~/.m2/repository
cd ~/.m2/repository
unzip <downloaded SDK zip file>

接下来在Android Studio中创建一个新的项目,并在项目根目录的build.gradle文件中添加以下配置:

allprojects {repositories {google()mavenCentral()mavenLocal() // added}
}

注意一定要加入mavenLocal()这行,这样才可以加载到我们本地下载下来的二维码扫描库。

然后在app目录下的build.gradle文件中添加如下依赖:

dependencies {...implementation 'com.google.android.gms:play-services-code-scanner:16.0.0-eap1'
}

到这里为止,我们就成功将Google的这个二维码扫描库集成到我们项目当中了。

接下来介绍用法,用法就更加简单了。因为它的本质是发起一个Intent来调起系统的相机程序,然后获取扫描的结果值就可以了。不需要权限声明,也不需要动态申请权限,调用一个API即可搞定。代码如下所示:

class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)val button = findViewById<Button>(R.id.button)val textView = findViewById<TextView>(R.id.text_view)button.setOnClickListener {val scanner = GmsBarcodeScanning.getClient(applicationContext)scanner.startScan().addOnSuccessListener {val result = it.rawValuetextView.text = result}}}}

这里当我们点击一个按钮时,会调用GmsBarcodeScanning的getClient()方法来获取一个GmsBarcodeScanner的实例。

然后调用startScan()即可开始扫描二维码,调用addOnSuccessListener()方法注册一个回调监听。当获取到二维码扫描结果的时候,我们将扫描出的结果显示在TextView上面。

整体代码非常简单,另外再附上activity_main.xml的布局内容,同样也非常简单:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Scan Code" /><TextViewandroid:id="@+id/text_view"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

现在运行一下程序,效果如下图所示:

可以看到,整个二维码扫描界面都是由Google给我们提供的,扫描框也是典型的Google风格。我们只需要调用API,获取扫描结果即可,接入成本非常非常低。

但是如此方便的二维码扫描库却只能造福海外的开发者,国内由于没有Google Play Service,我们无法直接享受到这个库所带来的便利性。

于是我也将这个问题提给了Google,对于中国的开发者,如果也想要用这个二维码扫描库怎么办?

得到的答复是,Google是将ML Kit barcode scanner绑定成为了Google Play Service的一部分安装到各个手机上的,如果我们的手机上没有Google Play Service,那么就需要将ML Kit barcode scanner的完整版本集成到我们的项目当中才行。

完整版本的集成文档我也讨来了,链接如下:

https://developers.google.com/ml-kit/vision/barcode-scanning/android

上述文档中还包含了如何从一张图片、或者一个Bitmap对象中解析二维码的功能,具体详情请参考文档即可,这里就不再展开讲解了。

一篇技术尝鲜小短文送给大家。


如果想要学习Kotlin和最新的Android知识,可以参考我的新书 《第一行代码 第3版》,点击此处查看详情。

关注我的技术公众号,每天都有优质技术文章推送。

微信扫一扫下方二维码即可关注:

Android终于要推出Google官方的二维码扫描库了?相关推荐

  1. 前端二维码扫描库html5-qrcode使用(据说已不能用)

    最新更新: 本文首发是在2017年,当时这个库是可以用的.现在据网友评论好像已经不可以用了,所以大家还是跳过吧,或者去库的官网看看有没有最新更新. ####本文介绍前端二维码扫描库html5-qrco ...

  2. Android开发之google Zxing实现二维码扫描的代码分析

    1.技术简介    在Android中实现二维码的扫描主要是通过第三方框架来实现的,主要框架是google的Zxing.现在就用该框架来实现二维码及条形码的扫描及识别,同时对于手机中存储的图片也进行识 ...

  3. Android自由行之走进zxing,轻松实现二维码扫描

    现在很多App都集成了扫一扫功能,最常用的微信.QQ.手机助手等.二维码也使得生活变得更加简洁,扫一扫订餐.扫一扫下载等等.那么,说到二维码,我们不得不提Google一个开源的扫码框架:zxing. ...

  4. Android 基于Zxing二维码扫描的光速实现

    Android 十分钟光速实现二维码扫描 前言 在项目中要使用到二维码的相关内容,我们第一时间想到的是使用大名鼎鼎的zxing或者ZBar开源框架: github-zxing官方库的地址 github ...

  5. Android笔记:Zing二维码扫描解决二维码被拉伸

    二维码扫描 Android Zxing图片拉伸解决 Zxing是google提供的二维码扫描工程 默认是横屏的 转换成竖屏后图片出现拉伸 这里提供解决办法: Zxing 修改 CameraConfig ...

  6. Android二维码扫描

    本文详细说明怎么在Android端实现二维码扫描,只是讲述如何利用Google zxing进行二维码扫描,不涉及代码的深入研究,结果文章最后附有demo,demo可直接使用,觉得文章累赘可以直接拷de ...

  7. android开发二维码扫描

    最近项目开发中,遇到了二维码的问题!于是就去Google,搜索结果提及最多的就是ZXing了!当然这也是Google推荐的! ZXingGithub地址:https://code.google.com ...

  8. Android直播带货系统中如何实现二维码扫描功能

    自李佳琦的出现将直播带货成功的引向了"巅峰",为了响应众平台和用户的需求,开发Android直播带货系统成为当下的开发热潮.那么在平时的直播软件中,登录.分享.支付等场景中经常出现 ...

  9. Flutter 二维码扫描插件

    文章目录 前言 效果演示 一.Zxing是什么? 二.插件Android部分 1. 创建Flutter插件 2. 引入Zxing依赖库 3. 权限配置 4. ZXingLite代码引入 5. 编写Qr ...

  10. 使用ZXing实现二维码扫描

    在Android开发中有时我们需要实现二维码扫描功能,现在就来简单介绍一下使用ZXing 来实现二维码扫描功能. 一.在module的build.gradle中添加依赖dependencies com ...

最新文章

  1. 第四章 菜单、工具栏和状态栏(第8课)
  2. ThinkPHP5验证码不显示的原因及解决方法
  3. Win32汇编最简ComboBox Demo
  4. 薪资涨幅60%,直通一线互联网公司的秘密......
  5. 《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制
  6. 用Go开发支持百万级数据量的高性能缓存服务
  7. Halcon:Image、region、xld常用的处理
  8. mysql kill hup_kill -HUP pid
  9. python保留字的是_Python保留字
  10. 0057-简单的累加
  11. 20145122 《Java程序设计》第5周学习总结
  12. Mac 终端命令大全
  13. html如何设置整体字体颜色,html字体颜色 html如何设置字体颜色
  14. 2年工作经验杂谈(java开发)
  15. 截流式合流制设计流量计算_截流式合流制管渠的水力计算要点
  16. elemen点击时,修改走马灯的播放索引
  17. macos 版本_如何检查您使用的macOS版本
  18. 计算各种面值人民币张数
  19. Linux FTDI
  20. Android Crash signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr b56cb106

热门文章

  1. 兜兜转转,Image图片转换成PDF还是这款工具靠谱
  2. 系统的x86与x64是什么意思以及他们的区别?
  3. 第一次滑雪小记——杭州临安大明山滑雪场
  4. 人工智能专业保研面试如何准备?
  5. 统一社会信用代码校验规则
  6. 免费剪辑音乐的软件都有哪些?音频剪辑方法分享?
  7. 双线双IP服务器架设传奇SF图文教程
  8. JS获取手机型号和系统版本
  9. Ezchip Tilera Tile-Mx100: Der 100-ARM-Netzwerkprozessor
  10. 环境变量GOBIN导致GoClipse运行出现异常