ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码。同时还需要core.jar文件。点击进入下载界面
解压rar文件,将其中android文件夹作为项目导入到eclipse中,并且将core.jar文件导入到libs文件夹中,对报错的地方进行修改(都是小错误,按照提示修改即可)。
这个时候项目就可以运行了,我又对项目做了一些小修改,包括删去了一部分在实际中我没有用到的功能,并按照百度上搜索的经验调整了相机的角度(横屏变成了竖屏),结果如图
一般的二维码扫描程序在扫描到结果后,如果是网址链接,都会有对话框询问是否打开链接;如果是其他结果,则通过对话框显示,下面我们来实现两个功能。
首先找到CaptureActivity.java文件,这个是该项目的主activity,找到函数 private void handleDecodeInternally(Result rawResult, ResultHandler resultHandler, Bitmap barcode),这个函数就是对扫描到的结果进行显示处理的函数,将函数中的代码换成以下的代码即可(其中WebViewAct是一个新的activity,利用webview显示网页,需要在manifest文件中注册)
statusView.setVisibility(View.GONE); viewfinderView.setVisibility(View.GONE); String type=null; type=resultHandler.getType().toString(); final String urlresult=resultHandler.getDisplayContents().toString(); if(type.equals("URI")) { new AlertDialog.Builder(this) .setTitle("扫描结果") .setMessage(urlresult) .setPositiveButton("连接", new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(CaptureActivity.this, WebViewAct.class); intent.putExtra("url", urlresult); startActivity(intent); CaptureActivity.this.finish(); } }) .setNegativeButton("取消",new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub onKeyDown(KeyEvent.KEYCODE_BACK, null); } })//返回二维码扫描页面 .show(); } else { new AlertDialog.Builder(this) .setTitle("扫描结果") .setMessage(urlresult) .setPositiveButton("确定", new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { // TODO Auto-generated method stub onKeyDown(KeyEvent.KEYCODE_BACK, null); } })//返回二维码扫描页面 .show(); }效果如图