ZXing简明教程-从0开始

嘎子 Android 2017-03-21 3,270 次浏览 , 1条评论

二维码用的越来越多了,所以自己就想研究一下。

我之前也看过有关二维吗相关的东西,知道ZXing这个东西,所以一上去就找到这个类库了。但下下来却发现自己真是“图样图森破”,源码非常庞大的,根本无从下手。当然自己也找了一些教程,发现虽然很多,但起点都太高,有点不太适合自己。

首先第一点:ZXing是用Eclipse写的,代码也非常复杂,不知道从哪里下手。

第二点:网上有很多精简ZXing库的,我觉得完全没有必要,ZXing总共也就不到600K,这些空间对现有的手机来讲完全不是问题。

第三点:大多数人只是使用用ZXing,并不会对类库的内容进行修改。基于以上三点,我给大家写一个简明的教程。当然,自己也菜鸟,有写的不到位的地方,希望大家指出。

一、从哪里开始

两个起点:

1、直接写新的Android程序,引用ZXing的类库。如果从这里开始,可以直接阅读“二、新建Android程序”,跳过“三、从Barcode Scanner开始”。

2、与ZXing一起发行的有一个Barcode Scanner程序,实现了完整的二维码(条形码)扫描的功能,在此基础上开始。如果从这里开始,可以直接阅读“三、从Barcode Scanner开始”,跳过“二、新建Android程序”。

在开始之前,项目的主页:ZXing主页

一些基本的介绍:Getting Started Developing · zxing/zxing Wiki · GitHub

二、新建Android程序

好吧,我把事情想简单了,写了好多发现很多东西要引用Barcode Scanner中的类,不太适合初学者,所以略过。

三、从Barcode Scanner开始

我对Git使用并不是很熟悉,所以自己就抛开Git。从Barcode Scanner开始的话,要先下载源码。源码下载地址在基本介绍Getting Started Developing · zxing/zxing Wiki · GitHub中也有,现阶段最新版本为3.3.0,下载地址为:ZXing最新版本发布。下载后解压到任一目录。

3、1 将Barcode Scanner导入Android Studio

Barcode Scanner的源码都在android目录下。导入方法:

打开Android Studio,如果有之前的工程,则会直接打开。此时点击:File->Close Project,进入如下界面,如果之前没有打开工程,会直接进入如下界面。

单击“Import Project”,然后选择源码中的android文件夹。

导入过程中会有一些提示,单击“Finish”就可以了。

3.2 添加Jar引用

此时如果直接调试你会发现有很多错误,主要是如下类型的:

这个明显是一些jar库没有引用。添加jar一般的做法是:

然后在app文件夹下新建libs文件夹(只是习惯用法,你可以任意给文件夹命令,只要不冲突就可以),然后将jar文件拷入,右键单击jar文件,“Add As Library...”就可以。具体拷入哪些jar文件和jar文件在哪里下载,请继续向下看。

网上也有很多教程教给大家怎么自己编译jar文件,个人还是觉得没有必要,网络上有已经编译好的,直接下载就可以。

下载地址在基本介绍Getting Started Developing · zxing/zxing Wiki · GitHub中也有:Maven release repository,需要下载的文件有两个,分别是core-3.3.0.jar和android-core-3.3.0.jar。把两个文件拷入,添加就可以了。

这样Barcode Scanner就可以正常运行了。

=====================可爱的分割线===============================

四、进一步解释

发现自己真是“图样图森破”,自己还没有搞懂之前就开始写教程了,虽然没有写错,但是有很多不妥之外的,所以今天再补充一下。

4.1 ?解释一下几个包的作用

core:就是ZXing最核心的模块,只与“条码扫描”有关,用java实现,与平台无关,主要实现条码的编码与解码。

android-core:ZXing用于Android的一些核心功能,主要是关于摄像头的功能。

android:就是Barcode Scanner程序的源码,中文名"条码扫描器"。下文中简写为BS。上文已经写的很清楚怎么将这些源码导入Android Studio

android-integration:提供一种简单的途径将Barcode Scanner整合到调用方app中

androidtest:模拟调用方app,通过android-integration整合Barcode Scanner


android-integration
zxing项目的本意是将BS作为一个独立的app,可以单独使用,同时亦可简单被其他app调用,在调用的过程中给用户的感觉它们是一个整体。在这中间起到”简单整合”作用的便是android-integration。

正如android-integration的文档中所述,android-integration的作用在于为调用方提供一个简单的方法实现扫描并接受扫描的结果,调用方完全不必了解BS的代码原理(不必为了整合到调用方app中而学习BS代码),只需按照简单的几个步骤即可轻松实现编解码。

但是这样看起来简单的整合存在一个问题:作为独立应用的BS必须与调用方app一起被安装,否则android-integration会要求用户到应用市场下载BS。而BS同时包含了编解码功能,如果只需要解码功能,那多余的那部分编码功能只是徒增了app的大小却没有任何用处。研究BS源码是势在必行。

integration的使用方法只需简单的两步,具体使用方法可参考IntentIntegrator类的注释。
androidtest
这是一个完整的应用Barcode Scanner的实例,从主界面上即可看出可用的操作,其实大部分操作都是在BS中完成的。

4.2 总结一下该如何使用ZXing

如果不介意把大约789K的Barcode Scanner和程序一起安装,android-integration是一个非常不错选择。

但是很多人是介意这样做的,下面我计划做两项工作来简化在Android上使用ZXing。

1、将Barcode Scanner进行简化,并生成jar库,方便直接引用。从而简化ZXing在Android上使用。

2、在1的基础上,看能不能用于android-integration相同或相似的方法向外提供编程接口。

由于ZXing源码本来说非常完善,所以上面两项工作尽量在少修改源码的基础上进行。

==================分割================================================

今天又研究了一天的代码,发现大家简化的还有一个问题,那就是兼容性的问题。

多数代码是直接简化了Barcode Scanner用于自己的项目,但实际上别人再使用的时候可能环境不一样,所以代码下载下来就可以正常运行的很少。我的想法是写成一个Android Library,这样就极大的方便了大家引用使用。

五、两个Android Library库

这几天测试了一下自己的想法,发现还真是可行的。下一步就是将Barcode Scanner打包成Android Library库了。现在的想法是将原版的Barcode Scanner打成一个库,另一个库是将Barcode Scanner极度精减,打成一个库。

5.1 Barcode Scanner库

此库的想法是尽可能的少改动Barcode Scanner,尽可能保持Barcode Scanner所有的功能。但由于Android Library的限制,更改少量代码是必不可少的。此库甚至连包的名字都没有改。

由于此功能对代码的改动量较少,近期可以完成。

发布页面如下:ZXingAndroidClientLibrary发布及使用指南

5.2 Tson Zxing库

从名字就可以看出,此库对Barcode Scanner进行大手术。此库会将Barcode Scanner精简到只剩下两个功能:扫码和生成条形码(二维码)。这两个功能才是ZXing的核心功能。

当然,在精简的基础上我希望能做的是使其可拓展性更好。希望能做到让大家定制这两个功能,又不用对Tson Zxing库进行修改。

此库的工作量会比较大,需要较长时间。而且自己也并不是专职人员,所以请大家耐心等待。

 

原创文章,文章首发于:Riley Ge (@rileyge) — Steemit

原创文章,转载请注明: 转载自TsonTec:测量解决方案提供者

本文链接地址: ZXing简明教程-从0开始

相关主题

  • ZXingAndroidClientLibrary发布及使用指南2017-03-25 ZXingAndroidClientLibrary发布及使用指南 (2)
    经过几天的努力,ZXingAndroidClientLibrary终于经过测试,成功发布。Github地址:https://github.com/RileyG […]
  • java中文件流读取的read方法注意问题2017-02-18 java中文件流读取的read方法注意问题 (0)
    本文说明了一个InputStreamReader类的public?int?read(char[]?cbuf, int?offset, […]
  • Leica仪器通过蓝牙与Android手机连接2017-03-30 Leica仪器通过蓝牙与Android手机连接 (6)
    最近在捣鼓Leica仪器通过蓝牙与Android手机连接,把此事记录一下,希望对其他人有用。 一、各种连接不成功 最早自己使用的是Google官方的例子: […]
  • 半小时入门Kotlin中的Lambda表达式2017-05-26 半小时入门Kotlin中的Lambda表达式 (1)
    在开始这个教程之前,我还是很有压力的,怎么样才能把这个问题说明白,真是挺让我头疼的。 先给大家来点基础知识吧: 一、函数式编程 有人说 也许继"面 […]
  • Kotlin中的When表达式2017-05-28 Kotlin中的When表达式 (0)
    如果之前有其他语言(如Java、C#等)的开发基础,那么在阅读和使用Kotlin时基本没有太大障碍,但有一个关键词是Kotlin中新出现的,那就是when。其 […]
  • 在Android Studio 3中使用Kotlin2017-05-26 在Android Studio 3中使用Kotlin (0)
    Android Studio 3中让Kotlin成为了默认语言,所以自己迫不及待的试用了一下,结果还是很让人激动的。 先分享一个Android […]

说点什么

1 评论 在 "ZXing简明教程-从0开始"

提醒
avatar
排序:   最新 | 最旧 | 得票最多
星空游戏
游客
星空游戏

沙发http://www.87366348.com

回顶部