参考文章:http://www.cnblogs.com/tankaixiong/archive/2010/10/27/1862030.html
http://www.cnblogs.com/tankaixiong/archive/2010/10/28/1863997.html
http://www.cnblogs.com/tankaixiong/archive/2010/10/31/1865807.html
按照自己实际情况稍做改动。
这里我们会用到一个开源组件zxing ,大体上所有流行的条码都支持(一维码,二维码),并且识别是最好的在所有开源里面。我将详细讲解ZXing的使用
官网地址:http://code.google.com/p/zxing/downloads/list
这个开源组件支持的条码有如下:
UPC-A and UPC-E
EAN-8 and EAN-13
Code 39
Code 93
Code 128
QR Code
ITF
Codabar
RSS-14 (all variants)
Data Matrix
PDF 417 ('alpha' quality)
一、编写你的第一个android条码识别程序。zxing的简单使用!
第一步:下载zxing组件:
下载两个东西:
1、BarcodeScanner3.5.apk这个是编译好的一个可安装的apk程序!这个后面将用到。
地址:http://code.google.com/p/zxing/downloads/detail?name=BarcodeScanner4.31.apk&can=2&q=
2、http://code.google.com/p/zxing/downloads/detail?name=ZXing-2.1.zip&can=2&q=
第二步:
安装BarcodeScanner3.5.apk
cmd中cd 到sdk目录
利用adb命令安装BarcodeScanner3.5.apk
adb install BarcodeScanner3.5.apk 所在目录,请确定安装成功了。
第三步:ok 终于到编码了!
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
publicclass MyTest extends Activity {
/** Called when the activity is first created. */
private TextView tv;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mytest);
tv=(TextView) findViewById(R.id.mytxt);
findViewById(R.id.mybtn).setOnClickListener(listener);
}
public Button.OnClickListener listener=new Button.OnClickListener(){
publicvoid onClick(View v){
Intent intent =new Intent("com.google.zxing.client.android.SCAN");//调用扫描的actity,这里其实只是转到刚才安装的BarcodeScanner3程序的中一个actity
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");//输入参数,(扫描类型,..二维码)
startActivityForResult(intent, 0);//启动intent
}
};
//扫描成功后回调函数,传回code
publicvoid onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode ==0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
// Handle successful scan
tv.setText(" 条形码为:"+contents+" 条码类型为: "+format);//利用页面的textveiw显示扫描后的结果
} elseif (resultCode == RESULT_CANCELED) {
// Handle cancel
tv.setText(" 扫描失败!");
}
}
}
}
对应的xml如下
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
android:orientation
=
"vertical"
android:layout_width
=
"fill_parent"
android:layout_height
=
"fill_parent"
>
<
TextView
android:layout_width
=
"fill_parent"
android:layout_height
=
"wrap_content"
android:text
=
"@string/hello"
android:id
=
"@+id/mytxt"
/>
<
Button
android:text
=
"点我开始扫描"
android:id
=
"@+id/mybtn"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
></
Button
>
</
LinearLayout
>
|
第三步:OK我们赶快看看效果吧, 运行。
你会看到如下:
总结:
这里只是做了一个简单的调用,调用简单但有一个很大的缺陷,这里我们要安装两个程序!
在安装BarcodeScanner3.5.apk为前题,这明显不能接受!
二、由于上面需要安装多余的组件,所以下面开始研究源码
官网上只提供源码的下载,并没有提供编译好的开发包,也就是说你自己下过来后还要自己编译,不然把下下来的源码程序导入到myeclipse中会报错。
如图:
这里我就讲下zxing的编译,为后面的开发做好一个最基本的准备!
第一步:准备包
http://code.google.com/p/zxing/ 下载
编译zxing
下载ant 地址http://ant.apache.org/
解压:zxing-2.1
目录结构下:
zxing-2.1
-android
android-integration
core
build.properties
build.xml
......
第二步:配置环境变量。
打开build.properties
android-home你的 sdk目录
android-home=../Android/android-sdk-windows
配置ant环境变量(在“我的电脑”,右键--属性--高级系统设置--环境变量,如果没有ANT_HOME和PATH就新建)
ANT_HOME
G:\work\google_two-dimension_resource--ZXing\apache-ant-1.8.4-bin\apache-ant-1.8.4
PATH
G:\work\google_two-dimension_resource--ZXing\apache-ant-1.8.4-bin\apache-ant-1.8.4\bin
cmd 中ant回车出现
Buildfile: build.xml does not exist!
Build failed
表示成功!
(我在测试时,好像提示了找不到jdk,然后在环境变量中配置上JAVA_HOME,值是C:\Program Files\Java\jdk1.6.0_30(jdk安装目录)就ok了)
第三步:开始编译
cd 到core目录 然后ant
BUILD SUCCESSFUL
Total time: * second
表示成功编译!
然后编译android
cd ../android (我的目录是G:\work\google_two-dimension_resource--ZXing\ZXing-2.1\zxing-2.1\android)
执行 ant
好了!有了核心包后我们可以就可以导入到项目工程里去了,现在是不是就不报错了!而且还可以直接运行的!(eclipse中导入的代码是G:\work\google_two-dimension_resource--ZXing\ZXing-2.1\zxing-2.1\android下的代码)
(如何导入工程:在工程的根目录下(和src同一级目录)建一个文件夹,名字是libs,然后把刚才编译好的G:\work\google_two-dimension_resource--ZXing\ZXing-2.1\zxing-2.1\core目录下的core.jar拷贝到libs中,右键core.jar---Build Path---Add to Build Path)
android 目录则是BarcodeScanner3.5.apk的源码
想不安装BarcodeScanner3.5.apk我们可以直接在源码上进行修改并进行编译,就ok了。