Android 二维码

Google一下发现,用的较多的是ZXing,据说市面上很多APK都是基于ZXing。

简介

ZXing主页 https://github.com/zxing/

ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。

貌似早期的ZXing托管在Google Code(目前已关闭,即便不关闭墙内也无法访问)上,早期版本要用到Ant,目前,最新版(3.2.0)要用到Maven。

支持格式

1D product 1D industrial 2D
UPC-A Code 39 QR Code
UPC-E Code 93 Data Matrix
EAN-8 Code 128 Aztec (beta)
EAN-13 Codabar PDF 417 (beta)

ITF

RSS-14

RSS-Expanded

模块

Module Description
core The core image decoding library, and test code
javase JavaSE-specific client code
android Android client Barcode Scanner Barcode Scanner
androidtest Android test app, ZXing Test
android-integration Supports integration with Barcode Scanner via Intent
android-core Android-related code shared among android, androidtest, glass
glass Simple Google Glass application
zxingorg The source behind zxing.org
zxing.appspot.com The source behind web-based barcode generator at zxing.appspot.com

其他语言(平台)

Module Description
cpp C++ port
iphone iPhone client
objc Objective C port
actionscript Partial ActionScript port
jruby JRuby wrapper

详见https://github.com/zxing/zxing

下载

GitHub下载,可以clone,也可以Download Zip

编译

先要有maven环境,maven环境搭建见Maven笔记(一)

mvn package

注:最新版(3.2.0)需要Android SDK(需要有ANDROID_HOME环境变量),API Level为22。

如果不想编译,可以直接去http://repo1.maven.org/maven2/com/google/zxing/core/下载对应版本的jar包。

集成到已有项目

1. 从zxing/android目录中拷贝libs目录,包含文件core-3.2.1-SNAPSHOT.jar(版本不同,文件名应该不同)

2. 从zxing/android/res中拷贝drawable、layout、raw、values、xml等目录,其中values中文件(尤其是strings.xml)可能有冲突,需要合并。

3. R cannot be resolved to a variable,需要import你的R包,如com.example.xxxx.R;

4. The import com.google.zxing.client.android.R cannot be resolved,需要将com.google.zxing.client.android.R替换成com.example.xxxx.R

5. src中添加zxing\android\src\com\google\zxing\client\android,另外,会提示CameraConfigurationUtils找不到,需要从zxing\android-core\src\main\java\com\google\zxing\client\android\camera拷贝。

6.AndroidMainfest.xml添加uses-permission,activity等,注意:因为<mainfest>节点,package的值不是com.google.zxing.client.android,在activity中,要写全部路径,如android:name="com.google.zxing.client.android.CaptureActivity"。

7. 在需要扫描的地方:Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            startActivity(intent); //或者startActivityForResult。

你可能感兴趣的:(Android 二维码)