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

首先

工程结构:

如何引用:(内容来自雪炭网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 ;
     }
  
                                                                                                                                                                                        
}

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

最终运行效果


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

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

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

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

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

转载于:https://my.oschina.net/u/563703/blog/355858

Android 二维码扫描源码下载相关推荐

  1. Android 二维码 生成和识别(附Demo源码)

    Posted on 2013-08-25 23:15 泡泡糖 阅读( 20424) 评论( 7) 编辑 收藏 今天讲一下目前移动领域很常用的技术--二维码.现在大街小巷.各大网站都有二维码的踪迹,不管 ...

  2. Android二维码扫描之ZXing快速项目集成

    <Android二维码扫描之ZXing快速项目集成> 二维码扫描现在是一直比较多的应用场景,Android的开源项目ZXing提供了完整.成熟的解决方案,如果仅仅是出于快速开发的目的,可以 ...

  3. 解决Android二维码扫描ZXing竖屏拉伸变长闪退扫描区域小等问题

    Android 基于google Zxing实现二维码.条形码扫描,仿微信二维码扫描效果 这篇文章写的不错,但是按照这篇文章使用二维码的话会出现竖屏扫描图像拉伸变长的问题(有一个地方计算错误),解决拉 ...

  4. Android二维码扫描开发(一):实现思路与原理

    2019独角兽企业重金招聘Python工程师标准>>> Android二维码扫描开发(一):实现思路与原理 Android二维码扫描开发(二):YUV图像格式详解 Android二维 ...

  5. 蓝牙扫描器 二维码扫描 一维码扫描 蓝牙传输 输入法源码

    softboy蓝牙输入法. 蓝牙扫描器 二维码扫描 一维码扫描 蓝牙传输 输入法. 可以通过安装这个输入法程序,识别蓝牙扫描器.然后扫描器将文本输入到手机上. 里面有附图.图中可以将 绿茶的二维码 传 ...

  6. Android 二维码扫描(仿微信界面),根据Google zxing

    Android 二维码扫描(仿微信界面),根据Google zxing Android项目开发中经常会用到二维码扫描,例如登陆.支付等谷歌方面已经有了一个开源库(地址: https://github. ...

  7. SpringBoot生成二维码 扫描并可下载文件

    生成二维码 扫描并可下载文件 pom.xml 依赖 application.yaml Controller ImageBuilderUtils 工具类 适当根据自己的业务需求变通,然后就能轻松使用了, ...

  8. Android二维码扫描:基于barcodescanner

     Android二维码扫描:基于barcodescanner 二维码扫描现在成为一种非常常见的APP基础功能,附录1是我曾经用过的二维码/条形码扫描开源项目,但是附录1的项目集成和二次定制比较繁琐 ...

  9. Android 二维码扫码功能实现(Zxing集成,避坑启示)

    这两天想要实现一个能扫码的app,找了一下,发现zxing用的比较多,就在网上找了找怎么用zxing.我主要是按照宇宝守护神的博文"Android 二维码的扫码功能实现(一)"的步 ...

最新文章

  1. 华人“军火专家”——黄仁勋
  2. 符号说明表怎么做_教会你的孩子正确使用标点符号
  3. MySQL中文参考手册-- 常用查询的例子
  4. Oracle APEX 系列文章2:在阿里云上打造属于你自己的APEX完整开发环境 (准备工作)...
  5. 不会这些基础命令,白做运维了
  6. 根据状态转移写状态机-三段式
  7. Experimental-work1
  8. 如何安装Windows7多语言支持
  9. The requested profile “pom.xml“ could not be activated because it does not e
  10. ORACLE集群日志收集,【RAC】Oracle RAC集群环境下日志文件结构
  11. 树莓派基础实验13:雨滴探测传感器实验
  12. IDEA更换炫酷主题
  13. glide 设置宽高_Android之ImageView加载图片保持宽高比
  14. [ERROR] melodic运行比较新的包时报错,我这里是racecar的包出错
  15. bluecms 手把手教你0day挖掘-基础入门篇
  16. 电力通信网与运营商5G网络融合方案
  17. mouseover、mouseenter
  18. 键盘侠Linux教程(一)| 初学者建议
  19. NXP S32K344芯片开发随笔
  20. 防伪码查询溯源小程序开发

热门文章

  1. Linux input.h
  2. CSS文本样式(中划线下划线行高之类的还有color也是)
  3. MySQL设置远程访问权限
  4. Photoshop安装错误:无法写入注册表值。请检查权限。
  5. openCV学习之路(2-1)---深度解析imread函数
  6. Aspose.Words for .NET使用教程:将文档转换为字节数组和HTML
  7. 《后会无期》票房赶超《小时代3》 大数据解读韩寒VS四娘之争
  8. Ubuntu 下安装 Yar 扩展遇到的问题以及解决方案
  9. 《Physically Based Rendering》翻译中文版——Introduction(介绍)
  10. python判断n是否为完全数_判断一个数是否为完数