android利用zxing做的二维码扫描

ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。该项目可实现的条形码编码和解码。同时还需要core.jar文件。点击进入下载界面

解压rar文件,将其中android文件夹作为项目导入到eclipse中,并且将core.jar文件导入到libs文件夹中,对报错的地方进行修改(都是小错误,按照提示修改即可)。

这个时候项目就可以运行了,我又对项目做了一些小修改,包括删去了一部分在实际中我没有用到的功能,并按照百度上搜索的经验调整了相机的角度(横屏变成了竖屏),结果如图

android利用zxing做的二维码扫描_第1张图片android利用zxing做的二维码扫描_第2张图片


一般的二维码扫描程序在扫描到结果后,如果是网址链接,都会有对话框询问是否打开链接;如果是其他结果,则通过对话框显示,下面我们来实现两个功能。


首先找到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(); 
      }
效果如图




你可能感兴趣的:(Android开发,二维码,对话框,条形码,摄像头)