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 二维码扫描库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android实现扫描二维码功能

    本文实例为大家分享了Android实现扫描二维码的具体代码,供大家参考,具体内容如下 1.效果图: 2.引用公共库:builder.radle,在app目录下 implementation 'com.google.android.gms:play-services-maps:17.0.0' implementation 'com.google.android.gms:play-services-vision:19.0.0' implementation 'com.google.android.g

  • Android中利用zxing实现自己的二维码扫描识别详解

    前言 在上一篇文章中已经简单介绍了zxing的使用,快速集成到自己的项目中,但是使用的扫描我们没办法根据自己的需求来做自己的扫描界面,所以这篇我们来学习一下如何根据自己的需求来实现二维码的扫描.当然用到的库依然还是google的zxing.下面话不多说了,来一起看看详细的介绍吧. 方法如下: 首先我们打开google的zxing的地址,googledezxing地址 (本地下载),打开之后我们会看到这样的界面, 将这个文件下载我们本地,下载好之后我们需要复制android文件下的几个类, 根据这

  • Android 二维码扫描和生成二维码功能

    在APP开发中,常遇到二维码扫描功能和生成二维码的需求.Android大部分是集成了zxing这个开源项目的扫码功能. 开源项目地址 下面给大家介绍一下具体的集成步骤 集成步骤 参考demo 1.demo展示如下: 1.1demo首页 1.2扫描界面 可以根据需求修改,我实际项目中界面截图如下: 1.3生成二维码 2.引入文件 2.1 下载demo,拷贝demo中的com.google.zxing5个包和com.utils包引入到自己的项目中. 2.2 拷贝本项目demo中的布局activity

  • Android如何实现扫描和生成二维码

    目标效果:     该例子可以扫描二维码和条形码,扫描后会将信息显示到下方的TextView中,在EditText中输入想要生成的文本,点击生成二维码,会在下方显示二维码图片. 1.二维码的扫描与生成需要一个框架,网上的框架导入后改成is Library会提示错误,把switch改成if语句错误就没有了. 2.导入框架并新建项目,把框架添加到项目中去. 3.activity_main.xml页面设置控件. activity_main.xml页面: <LinearLayout xmlns:andr

  • Android开发实现模仿360二维码扫描功能实例详解

    本文实例讲述了Android开发实现模仿360二维码扫描功能的方法.分享给大家供大家参考,具体如下: 一.效果图: 二.框架搭建 1.首先,下载最新zxing开源项目. 下载地址:http://code.google.com/p/zxing/ 或 点击此处本站下载. 2.分析项目结构,明确扫描框架需求.在zxing中,有很多其他的功能,项目结构比较复杂:针对二维码QRCode扫描,我们需要几个包: (1)com.google.zxing.client.android.Camera 基于Camer

  • Android实现扫描和生成二维码

    本文实例为大家分享了Android实现扫描和生成二维码的具体代码,供大家参考,具体内容如下 需求: 就是需要把数据存放到二维码中,然后通过扫描二维码拿到数据,并展示到页面上. 功能展示: demo下载:Android扫描生成二维码 代码实现: 1.引用第三方 //AndroidX 版本 implementation 'com.king.zxing:zxing-lite:1.1.7-androidx' 2.在AndroidManifest.xml 声明CaptureActivity <activi

  • android实现扫描网页二维码进行网页登录功能

    先说一下实现了什么效果,app扫描php写的页面(也可以java网页,都一样的思路和步骤),扫描成功后跳转进入主页,光和你们这么说,肯定有人说了,没图说个jb,这就出来一个问题,很多人写博客,看这标题特别符合自己的问题,然后兴致勃勃的进来了,一看,我去...尼玛全是代码,也不知道是不是我的那种问题和想要的那种效果,心里没谱啊,好了,上图: 别纠结这页面咋这么丑,没写样式,说一下我实现的思路哈,首先在数据库中新建一个表用来存储扫码登录信息(id,username,randomnum),这三个分别是

  • Android扫描和生成二维码

    本文实例为大家分享了Android扫描和生成二维码的具体代码,供大家参考,具体内容如下 MainActivity.java public class MainActivity extends AppCompatActivity { private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCo

  • Android studio 实现手机扫描二维码功能

    安卓手机版本在6.0以后需要动态获取相机权限 1.获取相机权限 <!-- 获取手机相机的权限 --> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> 2.添加依赖 implementation 'cn.yipianfengye.a

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

    相信二维码扫描现在大家都已经不稀奇了,几乎所有的App里都会支持这个功能. 这里我要问大家一个问题,你们都是如何在自己的App中加入二维码扫描功能的呢? 相信会有一大部分朋友说,使用的是ZXing或者ZBar这种开源库. 但是不知道大家有没有思考过,二维码功能这么常见,为什么Google却没有提供一个官方的二维码扫描库呢? 反正我是没思考过.有需求,找开源,这可能已经成了很多Android开发者的常态化思维. 但令我没想到的是,官方的二维码扫描库,它真的要来了. 由于我是Google的GDE,有

  • Android实现基于ZXing快速集成二维码扫描功能

    二维码扫描现在是一直比较多的应用场景,android的开源项目ZXing提供了完整.成熟的解决方案,如果仅仅是出于快速开发的目的,可以根据自己的项目需要,把ZXing官方提供的项目稍加裁剪,就可以快速的集成到自己的项目中.下面详细演示和介绍如何实现基于ZXing官方提供的源码,快速集成二维码扫描功能到自己项目中的解决方案. (第1步):到ZXing官方主页下载最新的项目代码包,ZXing在github的官方主页:https://github.com/zxing,下载后解压.解压后根目录下有若干项

  • Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果(推荐)

    了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现很多朋友都有介绍二维码扫描的功能,然后我就跟着人家的介绍自己搞起了二维码扫描功能,跟着人家的帖子,很快我的项目就加入了扫描二维码的功能,然后自己还很开心. 随着微信的到来,二维码越来越火爆,随处能看到二维码,比如商城里面,肯德基,餐厅等等,对于二维码

  • Android App内监听截图加二维码功能代码

    Android截屏功能是一个常用的功能,可以方便的用来分享或者发送给好友,本文介绍了如何实现app内截屏监控功能,当发现用户在我们的app内进行了截屏操作时,进行对图片的二次操作,例如添加二维码,公司logo等一系列*. 项目地址 测试截图: 截屏原理 android系统并没有提供截屏通知相关的API,需要我们自己利用系统能提供的相关特性变通实现.Android系统有一个媒体数据库,每拍一张照片,或使用系统截屏截取一张图片,都会把这张图片的详细信息加入到这个媒体数据库,并发出内容改变通知,我们可

  • Android实现二维码扫描和生成的简单方法

    这里简单介绍一下ZXing库.ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该项目可实现的条形码编码和解码.目前支持以下格式:UPC-A,UPC-E.EAN-8,EAN-13.39码.93码.ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力. ZXing

  • Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题

    先给大家展示下效果图: 扫描内容是下面这张,二维码是用zxing库生成的 由于改了好几个类,还是去年的事都忘得差不多了,所以只能上这个类的代码了,主要就是改了这个CaptureActivity.java package com.zxing.activity; import java.io.IOException; import java.util.Vector; import android.app.Activity; import android.content.Intent; import

  • Android基于google Zxing实现各类二维码扫描效果

    随着微信的到来,二维码越来越火爆,随处能看到二维码,比如商城里面,肯德基,餐厅等等,对于二维码扫描我们使用的是google的开源框架Zxing,我们可以去http://code.google.com/p/zxing/下载源码和Jar包,之前我项目中的二维码扫描功能只实现了扫描功能,其UI真的是其丑无比,一个好的应用软件,其UI界面也要被大众所接纳,不然人家就不会用你的软件啦,所以说应用软件功能和界面一样都很重要,例如微信,相信微信UI被很多应用软件所模仿,我也仿照微信扫描二维码效果进行模仿,虽然

  • Android实现二维码扫描并登陆网页

    之前写过一个二维码扫描demo,用的Zxing的框架,点击下载,后续扫描二维码中出现一些问题,比如解决压缩图片,调整扫描窗口大小等等.后续单位要求做扫描登录实现,发现难点就是怎么知道你扫描的是这台电脑,后台必须获取到(后台技术的问题)然后把这个参数给我,再传递到后台,后台判断登录即可.这样自己扫描后直接传递个参数就可以实现登录了. 效果如下: 大概代码实现:扫描跳转: //扫描登录a case R.id.tv_more_qr: if (PventQuickClick.isFastDoubleCl

随机推荐