分享

利用ZXING开发条形码识别相关的Android应用程序 - 知诸博客

 patrickzhu 2010-10-04
条形码识别在相当多的应用程序开发中都有很重要的作用,加之目前一般的手机都有摄像功能,无疑提供了便利。然而相比一些传统的程序设计教程,一些很优秀的开源软件并没有足够的文档和例程来指导大家使用,对于初学者,探索的过程还是很痛苦的。分享一下在Android系统中使用开源软件ZXING作为条码识别模块的方法。

  ZXING简介:

  ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码,目前支持如下格式:

  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

  比如一般书籍背后的条形码就是一维的EAN-13条码,以下将介绍利用Android下的ZXING包进行条形码识别的方法:

  从GoogleCode的ZXING官网上下载BarcodeScanner3.4.apk,像安装普通Android应用程序一样安装它。然后创建最普通的Android手机应用程序,下文给出一个最简单的例程:程序调用BarcodeScanner去识别条形码,识别成功之后将条码显示在一个TextView上,实际开发中可以仿照这个办法或许条码再做相关处理。虚拟机中由于无法使用摄像头不能看到最终效果,经过真机测试,效果很好。

layout:    main.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas./apk/res/android
         android:orientation=”vertical”
         android:layout_width=”fill_parent”
         android:layout_height=”fill_parent”
         >
         <TextView xmlns:android=”http://schemas./apk/res/android
                     android:layout_width=”fill_parent”
                     android:layout_height=”wrap_content”
                     android:text=”barcodeTest”
                     android:id=”@+id/label”
                     />
</LinearLayout>

主程序:BarcodeScanTest.java

01 package net.ispiders.Barcode;
02   
03 import android.app.Activity;
04 import android.content.Intent;
05 import android.os.Bundle;
06 import android.widget.TextView;
07   
08 public class BarcodeScanTest extends Activity
09 {
10   
11     TextView label;
12   
13     @Override
14     public void onCreate(Bundle savedInstanceState)
15     {
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.main);
18   
19         label = (TextView)findViewById(R.id.label);
20   
21         Intent intent = new Intent("com.google.zxing.client.android.SCAN");
22         intent.putExtra("SCAN_MODE","PRODUCT_MODE");
23         startActivityForResult(intent,0);
24     }
25   
26     public void onActivityResult(int requestCode, int resultCode, Intent intent)
27     {
28         if (requestCode == 0)
29         {
30             if (resultCode == RESULT_OK)
31             //读取成功时,在label上显示读取到的条码和条码格式
32               {
33                 String contents = intent.getStringExtra("SCAN_RESULT");
34                 String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
35                 label.setText(contents+"   "+format);
36             }
37             else if(resultCode == RESULT_CANCELED)
38             //读取失败
39               {
40                 label.setText("Canceled");
41             }
42         }
43     }
44 }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多