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

参考文章: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" ?>
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
     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了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值