条形码在日常生活中有着广泛的应用,尤其是二维码,越来越多的移动应用都提供了扫描条码的功能,那么我们自己如何在来开发识别条码应用呢?

  • 马上学Android 030 - 调用Barcode Scanner进行条码识别

当然如果自己从拍照到图像处理再到数据识别和解析都是自己来写的话是需要挺有难度的,那么开发过程中如果可以的话还是借助一些第三方开源库来实现可能会更好点。条码扫描的第三方库也是不少,但是对Android开发者来说可能,ZXing这个库是在合适不过的了。关于ZXing的信息大家可以网上搜索了解一下。

在Github上下载ZXing后,找到android-integration下得两个Java文件添加到工程中,这两个文件集成封装了调用和解析Barcode Scanner的方法。只要用很少的代码就可完成条码扫描的功能。调用方式如下:

在Activity中添加一个startActivityForResult的响应函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

public class ScanBarcodeActivity extends Activity {

private Button btnScanBarcode;
private TextView tvScanBarcode;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan_barcode);

tvScanBarcode = (TextView)findViewById(R.id.tvScanBarcode);
btnScanBarcode = (Button) findViewById(R.id.btnScanBarcode);
btnScanBarcode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用Barcode Scanner扫描条码
IntentIntegrator intentIntegrator = new IntentIntegrator(ScanBarcodeActivity.this);
intentIntegrator.initiateScan();
}
});
}
}

在IntentIntegrator中封装了很多的静态方法,使用时创建一个IntentIntegrator对象然后调研initiateScan()就可以启动Barcode Scanner,扫描结束可以返回,需要重新onActivityResult来响应扫描接口

1
2
3
4
5
6
7
8
9
10
11
12

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode,resultCode,data);
if(scanResult != null){
//处理扫描结果
tvScanBarcode.setText(scanResult.toString());
} else {
//扫描识别未成功
Toast.makeText(this,"扫描识别未成功",Toast.LENGTH_SHORT).show();
}
}

当然ZXing库也可以通过Jar文件方式来调用,这样就不用调用Barcode Scanner,如果感兴趣的话可以在看一下Zxing的文档。