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

原文地址:https://www.cnblogs.com/chorm590/p/10914503.html