time 
设为首页】【收藏本站
当前位置: 主页 > 电脑网络 > 操作系统 > 嵌入式 > Android > Android基于google Zxing实现对手机中图片上的二维码进行扫描

Android基于google Zxing实现对手机中图片上的二维码进行扫描

时间:2014-01-22 17:04 点击:8928次 字体:[ ]




我之前写了一篇关于google Zxing扫描二维码的文章,效果是仿微信的效果,有兴趣的朋友可以去看看http://www.fengfly.com/plus/view-214537-1.html,有时候我们有这样子的需求,需要扫描手机中有二维码的的图片,所以今天实现的就是对手机中的二维码图片进行扫描,我这里是直接在原来的工程上面加的这个功能,下面就简单介绍下这个小功能的实现,首先我在界面上加了一个ImageButton,图片还是用的微信的图片,下面是扫描界面的title

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="fill_parent" 
  4.     android:layout_height="wrap_content" 
  5.     android:background="@drawable/mmtitle_bg_alpha" > 
  6.  
  7.     <Button 
  8.         android:id="@+id/button_back" 
  9.         android:layout_width="75.0dip" 
  10.         android:layout_height="wrap_content" 
  11.         android:layout_alignParentLeft="true" 
  12.         android:background="@drawable/mm_title_back_btn" 
  13.         android:text="返回" 
  14.         android:textColor="@android:color/white" /> 
  15.  
  16.     <TextView 
  17.         android:id="@+id/textview_title" 
  18.         android:layout_width="wrap_content" 
  19.         android:layout_height="wrap_content" 
  20.         android:layout_centerHorizontal="true" 
  21.         android:layout_centerVertical="true" 
  22.         android:gravity="center_vertical" 
  23.         android:text="二维码扫描" 
  24.         android:textColor="@android:color/white" 
  25.         android:textSize="18sp" /> 
  26.  
  27.     <ImageButton 
  28.         android:id="@+id/button_function" 
  29.         android:layout_width="wrap_content" 
  30.         android:layout_height="wrap_content" 
  31.         android:layout_alignParentRight="true" 
  32.         android:layout_marginRight="2dip" 
  33.         android:background="@drawable/mm_title_right_btn" 
  34.         android:minWidth="70dip" 
  35.         android:src="@drawable/mm_title_btn_menu_normal" /> 
  36.  
  37. </RelativeLayout> 

在扫描界面MipcaActivityCapture对ImageButton对其点击监听,点击ImageButton从手机中选择图片

  1. //打开手机中的相册  
  2.             Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); //"android.intent.action.GET_CONTENT"  
  3.             innerIntent.setType("image/*");  
  4.             Intent wrapperIntent = Intent.createChooser(innerIntent, "选择二维码图片");  
  5.             this.startActivityForResult(wrapperIntent, REQUEST_CODE); 

在这里使用了startActivityForResult来跳转界面,当我们选中含有二维码的图片的时候会回调MipcaActivityCapture的onActivityResult方法,我们需要在onActivityResult方法里面解析图片中的二维码

  1. @Override 
  2.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  3.         super.onActivityResult(requestCode, resultCode, data);  
  4.         if(resultCode == RESULT_OK){  
  5.             switch(requestCode){  
  6.             case REQUEST_CODE:  
  7.                 //获取选中图片的路径  
  8.                 Cursor cursor = getContentResolver().query(data.getData(), nullnullnullnull);  
  9.                 if (cursor.moveToFirst()) {  
  10.                     photo_path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));  
  11.                 }  
  12.                 cursor.close();  
  13.                   
  14.                 mProgress = new ProgressDialog(MipcaActivityCapture.this);  
  15.                 mProgress.setMessage("正在扫描...");  
  16.                 mProgress.setCancelable(false);  
  17.                 mProgress.show();  
  18.                   
  19.                 new Thread(new Runnable() {  
  20.                     @Override 
  21.                     public void run() {  
  22.                         Result result = scanningImage(photo_path);  
  23.                         if (result != null) {  
  24.                             Message m = mHandler.obtainMessage();  
  25.                             m.what = PARSE_BARCODE_SUC;  
  26.                             m.obj = result.getText();  
  27.                             mHandler.sendMessage(m);  
  28.                         } else {  
  29.                             Message m = mHandler.obtainMessage();  
  30.                             m.what = PARSE_BARCODE_FAIL;  
  31.                             m.obj = "Scan failed!";  
  32.                             mHandler.sendMessage(m);  
  33.                         }  
  34.                           
  35.                     }  
  36.                 }).start();  
  37.                   
  38.                 break;  
  39.               
  40.             }  
  41.         }  
  42.     } 

我们先通过图片的Uri获取图片的路径,然后根据图片的路径扫描出图片里面的二维码内容,这将解码图片放在了一个子线程中,主要是防止因为解析太久而出现ARN的情况



本文地址 : http://www.fengfly.com/plus/view-214538-1.html
标签: Android 图片 google Zxing
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: