Android的二维码扫码应用

87284155 2012-07-23

在企业应用中可能某一些情况,需要二维码扫码,大多数采用的开源组件zxing实现。简介

最近的Widget项目用到需要用摄像头来处理条形码,章师兄推荐了ZXing这个开源的项目,于是做一简单的调研。

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

当前,ZXing主要支持以下条形码:

UPC-AandUPC-E

EAN-8andEAN-13

Code39

Code128

QRCode

DataMatrix('alpha'quality)

ITF

首先,在http://code.google.com/p/zxing/上下载到ZXing的应用程序包,解压下载到的程序包后,我们可以看到整个应用程序分为一些组件。如下:

1.core:核心包,是整个应用的主要组件组成部分。

2.javame:为JavaME来定制的客户端工具。

3.javase:为PC端定制的客户端工具。

4.android:为Android端定制的客户端工具。

5.androidtest:Android测试应用程序,里面有在其它程序中使用此应用的示例。

基本测试

ZXing程序的运行需要我们使用Ant去打包编译之后才可。在这里,我主要调研了在PC端,在WTK上及android上的运行。

各种语言zxing的实现路径:

http://zxing.googlecode.com/svn

源代码svn路径:

http://code.google.com/p/zxing/downloads/list。

zxingAPK路径:

http://zxing.googlecode.com/files/BarcodeScanner4.1.apk

zxing和应用整合官方代码:

http://zxing.googlecode.com/svn/trunk/android-integration

测试代码如下:

Java代码

packagecom.easyway.android;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.view.View;

importandroid.view.View.OnClickListener;

importandroid.widget.Button;

importandroid.widget.TextView;

/**

*二维码扫码应用实例

*

*1.安装zxing客户端androidapk。

*2.调用相关的zxing

*3.获取相关的执行的结果

*

*如何扫描条形码

*现在做条形码扫描,java一般用zxing。zxing有多种复用方式,最简单的方式是,

*安装zxing软件,通过googlemarket。在自己的应用中,通过Intent调用zxing的扫描条码的Activity,

*然后将扫描到的结果返回自己的Activity。

*比较复杂的办法是,将zxing库包含在自己的程序中,这比较适合正式的应用。

*@Title:

*@Description:实现TODO

*@Copyright:Copyright(c)2011

*@Company:易程科技股份有限公司

*@Date:2012-5-9

*@authorlonggangbai

*@version1.0

*/

publicclassAndroidScanBarcodeActivityextendsActivityimplementsOnClickListener{

privateButtonbutton;

privateTextViewtextView;

/**Calledwhentheactivityisfirstcreated.*/

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.button=(Button)this.findViewById(R.id.btnscan);

this.button.setOnClickListener(this);

this.textView=(TextView)this.findViewById(R.id.txtScan);

}

@Override

publicvoidonClick(Viewview){

//调用对应的扫描方法

Intentintent=newIntent("com.google.zxing.client.android.SCAN");

this.startActivityForResult(intent,0);

}

/**

*获取扫描的结果

*/

@Override

protectedvoidonActivityResult(intrequestCode,intresultCode,Intentintent){

if(requestCode!=0){

this.textView.setText(R.string.noresult);

return;

}

if(resultCode==RESULT_OK){

Stringcontents=intent.getStringExtra("SCAN_RESULT");

Stringformat=intent.getStringExtra("SCAN_RESULT_FORMAT");

textView.setText("条形码为:"+contents+"条码类型为:"+format);//利用页面的textveiw显示扫描后的结果}elseif(resultCode==RESULT_CANCELED){

}

}

}

相关推荐