Android的二维码扫码应用
???????? 在企业应用中可能某一些情况,需要二维码扫码,大多数采用的开源组件zxing实现。简介
????? 最近的Widget项目用到需要用摄像头来处理条形码,章师兄推荐了ZXing这个开源的项目,于是做一简单的调研。
ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。
当前,ZXing主要支持以下条形码:
UPC-A and UPC-E
EAN-8 and EAN-13
Code 39
Code 128
QR Code
Data Matrix ('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。
zxing APK路径:
http://zxing.googlecode.com/files/BarcodeScanner4.1.apk
zxing和应用整合官方代码:
http://zxing.googlecode.com/svn/trunk/android-integration
?
?
测试代码如下:
package com.easyway.android;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;/** * 二维码扫码应用实例 * * 1.安装zxing客户端android apk。 * 2.调用相关的zxing * 3.获取相关的执行的结果 * * 如何扫描条形码 *现在做条形码扫描,java一般用zxing。zxing有多种复用方式,最简单的方式是, *安装zxing软件,通过google market。在自己的应用中,通过Intent调用zxing的扫描条码的Activity, *然后将扫描到的结果返回自己的Activity。 *比较复杂的办法是,将zxing库包含在自己的程序中,这比较适合正式的应用。 * @Title: * @Description: 实现TODO * @Copyright:Copyright (c) 2011 * @Company:易程科技股份有限公司 * @Date:2012-5-9 * @author longgangbai * @version 1.0 */public class AndroidScanBarcodeActivity extends Activity implements OnClickListener {private Button button;private TextView textView;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {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);}@Overridepublic void onClick(View view) {//调用对应的扫描方法Intent intent = new Intent("com.google.zxing.client.android.SCAN");this.startActivityForResult(intent, 0);}/** * 获取扫描的结果 */@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent intent) {if (requestCode != 0) {this.textView.setText(R.string.noresult);return;}if(resultCode==RESULT_OK){String contents = intent.getStringExtra("SCAN_RESULT");String format = intent.getStringExtra("SCAN_RESULT_FORMAT");textView.setText(" 条形码为:"+contents+" 条码类型为: "+format);//利用页面的textveiw显示扫描后的结果 } else if (resultCode == RESULT_CANCELED) {}}}?
?
源代码下载:
?
