文档章节

Android 二维码扫描源码下载

h
 hhcczz
发布于 2014/12/13 21:18
字数 824
阅读 228
收藏 0

Android 二维码扫描源码下载

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

首先

工程结构:

Android 二维码扫描源码下载


如何引用:(内容来自雪炭网SnowCoal.com

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


关于布局:

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
  * 处理扫描结果
  * @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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?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>

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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 二维码扫描源码下载

最终运行效果


更多代码详见源码:源码下载 QR_CodeScan.zip

好东西大家分享,如有需要源码的请至雪炭网下载

转载原文链接Android 二维码扫描源码下载

。。。。。。。。。。。。。。。。。。。。。。。。。。。

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


本文转载自:http://snowcoal.com/article/686.html

h
粉丝 0
博文 1
码字总数 0
作品 0
石家庄
私信 提问
使用QRCode轻松实现二维码扫描下载的功能

随着Android平台的应起,国内出现了很多优秀第三方的应用市场,他们都提供一个二维码下载功能,这是一个很人性化的功能,拿机你的HTC或者 摩托罗拉安卓手机,打开WIFI,安装好一个二维码扫描...

darwinwen
2011/12/19
1K
0
Android微信扫描二维码登入实现 基于ZXing开源工程

项目需求,做一个类似微信扫描二维码,网页端登陆的功能实现。 利用开源项目ZXing来实现。ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1...

jeffzhao
2013/02/02
14.3K
7
开源中国安卓客户端更新,支持语音动弹

这是 OSCHINA 官方开发的 Android 客户端软件,采用原生 API 开发,非 HTML 模式。 开源中国安卓客户端 v1.7.6.4 版更新资讯: OSChina.NET for Android v1.7.6.4 更新日志: 1、语音动弹发布...

火蚁
2014/02/11
4.4K
54
Android之条形码、二维码扫描框架

文章大纲 一、条形码、二维码扫描框架介绍 二、条形码、二维码的区别和组成结构介绍 三、条形码、二维码扫描框架应用场景 四、BGAQRCode-Android框架实战 五、项目源码下载 六、参考文章 一、...

故事爱人
05/28
0
0
[Unity3D]自制UnityForAndroid二维码扫描插件

一周左右终于将二维码生成和扫描功能给实现了,终于能舒缓一口气了,从一开始的疑惑为啥不同的扫码客户端为啥扫出来的效果不同?通用的扫描器扫出来就是一个下载APK,自制的扫描器扫出来是想...

丁小未
2014/05/01
4.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周二乱弹 —— 女装大佬被拆穿是妹子假扮

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《All of the Stars》- Ed Sheeran 《All of the Stars》- Ed Sheeran 手机党少年们想听歌,请使劲儿戳(这里) @Leon_swool ...

小小编辑
21分钟前
52
3
3. 彤哥说netty系列之Java BIO NIO AIO进化史

你好,我是彤哥,本篇是netty系列的第三篇。 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识。 简介 上一章我们介绍了IO的五种模型,实际上Java只支持其中的三种,即BIO/NIO/AIO。 本...

彤哥读源码
24分钟前
8
0
02.日志系统:一条SQL更新语句是如何执行的?

我们还是从一个表的一条更新语句说起,我们创建下面一张表: create table T(ID int primary key, c int); 如果要将ID=2这一行c的值加1,SQL可以这么写: update T set c=c+1 where ID=2; 前...

scgaopan
今天
9
0
【五分钟系列】掌握vscode调试技巧

调试前端js 准备一个前端项目 index.html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1......

aoping
今天
8
0
PhotoShop 高级应用:USM锐化/S锐化/防抖

、 高反差锐化+混合模式:叠加模式 【将更多的边缘细节添加到图像中】

东方墨天
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部