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


测试代码如下:
Java代码

    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. */
            @Override
            public 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);
            }

            @Override
            public void onClick(View view) {
                    //调用对应的扫描方法
                    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                    this.startActivityForResult(intent, 0);
            }

            /**
             * 获取扫描的结果
             */
            @Override
            protected 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) {
                    }
            }
    }

你可能感兴趣的:(android)