zoukankan      html  css  js  c++  java
  • APK 集成扫描二维码与条形码的功能

    2019-11-29

    关键字:libzxing、Android扫二维码


    如果你想在你的 APK 上集成一个扫描二维码、条形码的功能,你有两条路可选:

    1、使用第三方开源库;

    2、使用第三方开源库;

    没错,两条路都建议你选择一个成熟的第三方扫码开源库。极度不建议自己开发一个扫码软件,这种基础功能的东西网上早已有了非常成熟的开源解决方案,你为什么要浪费时间和精力去自己钻研呢?

    如果你说你就是想学习使用手机摄像头解析二维码、条形码的知识,那我就没话说了。

    本篇文章记述的是笔者在普通 APK 上集成 libzxing 开源库实现扫条形码与二维码功能的过程。

    首先来介绍下实现扫码功能的核心部件:zxing。

    zxing 是大名鼎鼎的开源一维、二维码解码库,它的Github地址为:

    https://github.com/zxing/zxing

    而 libzxing 则是对 zxing 的一个封装,它将 zxing 的基础功能作了一些简单的封装,使得开发者可以实现“拿来即用”的目的。笔者这篇文章记述的就是 libzxing 在 Android Studio 工程上的集成过程。

    首先,准备好 libzxing 的源码,它在笔者这里是一个普通的APK库工程文件夹:

    直接将这个文件夹放到我们的工程根目录下就行。

    其次,在 Android Studio 上打开我们的 APK 工程,默认情况下在视图结构为 "Android" 时是看不到我们刚加进去的 libzxing 工程的,如下图:

    这个时候就需要我们配置一下工程依赖链以使 Android Studio 能识别到 libzxing 库工程。

    打开工程的 'settings.gradle' 文件,并添加如下信息:

    打开我们 Module:app 的 build.gradle 配置文件,引入外部库工程,如下图所示:

    最后再打开 libzxing 工程的 build.gradle 配置文件,在这里主要就是修改一下编译信息,如编译工具、目标SDK版本等,修改原则以与自己的主工程一致为准:

    至此,应该就能看到 Android Studio 提示的提示同步 gradle 的请求了。同步一下,如果你的 gradle 库中没有 zxing 的依赖库,则可能需要连网下载,当然这个操作是自动进行的。然后应该就能看到 libzxing 的依赖已经上来的了:

    libzxing 的集成就完成了。下面再来看看如何使用它。

    libzxing 一个建议的调用扫码界面的方式是通过 startActivity 并监听 onActivityResult 的结果。

    调用的方式非常简单,就一行代码:

    QRCodeManager.getInstance().with(activity).scanningQRCode(REQUEST_CODE_QRCODE_BARCODE_SCAN);

    我们只需要知道 libzxing 的启动是通过 startActivityForResult() 实现的就能理解上面这段代码了。 with 方法的 activity 参数就是你触发扫码请求的 Activity 实例就行。scanningQRCode 的参数就是 startActivityForResult 的 requestCode。

    然后就是在对应的 Activity 里重写 onActivityResult() 方法即可。

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        if(requestCode == REQUEST_CODE_QRCODE_BARCODE_SCAN && resultCode == RESULT_OK && data != null){
            String code = data.getStringExtra("result");
            Logger.d(TAG, "qrcode/barcode:" + code);
        }
    }

    最后,不要忘记给 Camera 权限。

    扫码界面效果图如下:


    libzxing 源码:

    链接:https://pan.baidu.com/s/1sNb795VJpHYRPD_hbA8HhA
    提取码:q0lp

  • 相关阅读:
    序言vue.js介绍
    python中end=''
    python文件的操作
    python异常
    python异常(理论知识)
    Uva 11300 Spreading the Wealth 中位数
    反转(开关问题) poj3276
    NEKO's Maze Game 思维
    Aaronson 一道思维题
    我开博客了
  • 原文地址:https://www.cnblogs.com/chorm590/p/10914503.html
Copyright © 2011-2022 走看看