Android 二维码扫描源码下载2014-12-12 22:23:01

( 7人已投票,[高质量] )
分享: ╬收藏
31.3K

Android 二维码扫描源码下载

Android 二维码扫描是很常用的工具,是不是很Cool,到底如何实现的呢,下面我们就来探讨一下Zxing的实现方法(底部附上下载链接):

首先

工程结构:

Android 二维码扫描源码下载


如何引用:

一般来说,你就可以改改就用了,但如果你只想把它当成一个小小的子集加入项目,你需要将三个包Copy至你的项目中:(camera、decoding、view),然后引入相对应的资源进去,不要访记还有一个Jar包哦!(Zxing.jar)


关于布局:

com.example.qr_codescan包里面有一个MipcaActivityCapture,也是直接引入,这个Activity主要处理扫描界面的类,比如,扫描成功有声音和振动等等,主要关注里面的handleDecode(Result result, Bitmap barcode)方法,扫描完成之后将扫描到的结果和二维码的bitmap当初参数传递到handleDecode(Result result, Bitmap barcode)里面,我们只需要在里面写出相对应的处理代码即可,其他的地方都不用改得,这里处理扫描结果和扫描拍的照片.

/**
 * 处理扫描结果
 * @param result
 * @param barcode
 */ 
public void handleDecode(Result result, Bitmap barcode) { 
  inactivityTimer.onActivity(); 
  playBeepSoundAndVibrate(); 
  String resultString = result.getText(); 
  if (resultString.equals("")) { 
    Toast.makeText(MipcaActivityCapture.this, "Scan failed!", Toast.LENGTH_SHORT).show(); 
  }else { 
    Intent resultIntent = new Intent(); 
    Bundle bundle = new Bundle(); 
    bundle.putString("result", resultString); 
    bundle.putParcelable("bitmap", barcode); 
    resultIntent.putExtras(bundle); 
    this.setResult(RESULT_OK, resultIntent); 
  } 
  MipcaActivityCapture.this.finish(); 
}


对MipcaActivityCapture界面的布局做了自己的改动,先看下效果图,主要是用到FrameLayout,里面嵌套RelativeLayout。

//xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
                                                                                                                                                                                             
  <RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
                                                                                                                                                                                             
    <SurfaceView 
      android:id="@+id/preview_view" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_gravity="center" /> 
                                                                                                                                                                                             
    <com.mining.app.zxing.view.ViewfinderView 
      android:id="@+id/viewfinder_view" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
                                                                                                                                                                                             
    <include 
      android:id="@+id/include1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      layout="@layout/activity_title" /> 
  </RelativeLayout> 
                                                                                                                                                                                             
</FrameLayout>


实现

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 
                                                                                                                                                                                       
public class MainActivity extends Activity { 
  private final static int SCANNIN_GREQUEST_CODE = 1; 
  /**
   * 显示扫描结果
   */ 
  private TextView mTextView ; 
  /**
   * 显示扫描拍的图片
   */ 
  private ImageView mImageView; 
                                                                                                                                                                                         
                                                                                                                                                                                       
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
                                                                                                                                                                                           
    mTextView = (TextView) findViewById(R.id.result); 
    mImageView = (ImageView) findViewById(R.id.qrcode_bitmap); 
                                                                                                                                                                                           
    //点击按钮跳转到二维码扫描界面,这里用的是startActivityForResult跳转 
    //扫描完了之后调到该界面 
    Button mButton = (Button) findViewById(R.id.button1); 
    mButton.setOnClickListener(new OnClickListener() { 
                                                                                                                                                                                             
      @Override 
      public void onClick(View v) { 
        Intent intent = new Intent(); 
        intent.setClass(MainActivity.this, MipcaActivityCapture.class); 
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivityForResult(intent, SCANNIN_GREQUEST_CODE); 
      } 
    }); 
  } 
                                                                                                                                                                                         
                                                                                                                                                                                         
  @Override 
  protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case SCANNIN_GREQUEST_CODE: 
      if(resultCode == RESULT_OK){ 
        Bundle bundle = data.getExtras(); 
        //显示扫描到的内容 
        mTextView.setText(bundle.getString("result")); 
        //显示 
        mImageView.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap")); 
      } 
      break; 
    } 
  }  
                                                                                                                                                                                       
}

..............................................

Android 二维码扫描源码下载

最终运行效果



更多代码详见源码:源码下载

Android 二维码扫描源码下载 QR_CodeScan.zip [登录雪炭网后可见]



相关内容推荐:雪炭工具 --- 二维码在线生成器



内容来源: CSDN用户 xiaanming






头像

snowcoal
  • Android
  • 二维码
  • 源码

本文标签:

Android二维码源码

收藏到我的私密空间

标题:Android 二维码扫描源码下载

作者:花花世界

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限