android 条码识别软件开发全解析

来源:互联网 发布:java c 都有的关键字 编辑:程序博客网 时间:2024/04/24 05:51

参考文章: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如下

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextViewandroid:layout_width="fill_parent"
        android:layout_height="wrap_content"android:text="@string/hello"
        android:id="@+id/mytxt"/>
  
    <Buttonandroid: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了。

0 0
原创粉丝点击