我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android详细讲解谷歌推出的官方二维码扫描库

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android详细讲解谷歌推出的官方二维码扫描库

相信二维码扫描现在大家都已经不稀奇了,几乎所有的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/1yhVQqQUZ9goLaT8P4OzTVA?pwd=1234
提取码:1234

下载完成后,在你电脑的当前登录用户目录下创建一个.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.rawValue
                textView.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">
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Scan Code" />

    <TextView
        android: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对象中解析二维码的功能,具体详情请参考文档即可,这里就不再展开讲解了。

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

到此这篇关于Android详细讲解谷歌推出的官方二维码扫描库的文章就介绍到这了,更多相关Android 二维码扫描库内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android详细讲解谷歌推出的官方二维码扫描库

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中谷歌推出的官方二维码扫描库怎么用

小编给大家分享一下Android中谷歌推出的官方二维码扫描库怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!相信二维码扫描现在大家都已经不稀奇了,几乎所有的A
2023-06-29

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录