条形码识别在相当多的应用程序开发中都有很重要的作用,加之目前一般的手机都有摄像功能,无疑提供了便利。然而相比一些传统的程序设计教程,一些很优秀的开源软件并没有足够的文档和例程来指导大家使用,对于初学者,探索的过程还是很痛苦的。分享一下在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; |
03 |
import android.app.Activity; |
04 |
import android.content.Intent; |
05 |
import android.os.Bundle; |
06 |
import android.widget.TextView; |
08 |
public class BarcodeScanTest extends Activity |
14 |
public void onCreate(Bundle savedInstanceState) |
16 |
super .onCreate(savedInstanceState); |
17 |
setContentView(R.layout.main); |
19 |
label = (TextView)findViewById(R.id.label); |
21 |
Intent intent = new Intent( "com.google.zxing.client.android.SCAN" ); |
22 |
intent.putExtra( "SCAN_MODE" , "PRODUCT_MODE" ); |
23 |
startActivityForResult(intent, 0 ); |
26 |
public void onActivityResult( int requestCode, int resultCode, Intent intent) |
30 |
if (resultCode == RESULT_OK) |
33 |
String contents = intent.getStringExtra( "SCAN_RESULT" ); |
34 |
String format = intent.getStringExtra( "SCAN_RESULT_FORMAT" ); |
35 |
label.setText(contents+ " " +format); |
37 |
else if (resultCode == RESULT_CANCELED) |
40 |
label.setText( "Canceled" ); |
|