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 |
---|---|
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。