基于 zxing 的二维码扫描

本文介绍了基于ZXing库的二维码扫描功能在Android应用中的实现。内容包括ZXing库的选择原因、使用方法,以及关键类和方法的解析,如CaptureActivity、生成二维码的逻辑、相机管理和解码过程。此外,还提供了自定义UI和高可定制性的示例,适合需要在应用中集成二维码扫描功能的开发者参考。
摘要由CSDN通过智能技术生成

前言

现在的应用中二维码扫描已经成为一个应用必不可少的功能,现在大部分Android二维码扫描都是基于zxing和Zbar,这文章就来介绍一下基于zxing的二维码扫描。先看下效果图


虽然现在的关于二维码的文章有很多,但是很多都是交我们怎么使用,在使用的时候我也遇到了很多问题,比如。UI界面太丑,没有用的文件太多,扫描太慢,版本太老。本Demo使用的是3.x的是比较新的版本。我用的小米2A(api=19)亲测在正常情况下扫描时间和QQ微信差不多,我的界面是类防QQ的也是比较美观的。那么我们看看如何使用和文件的作用。


zxing

zxing官网 这是zxing官网。想了解更多的可以去官网,里面有文档不过在我看来。第三方库的使用我们没有必要完全了解,整体上我们了解所需要功能即可,这样减少了学习时间。


为什么选择zxing

  • google的开源项目,高可定制性

  • 可以识别多种码,不仅仅是二维码

  • 不依赖第三方库,使用起来简单                        


zxing的使用
  • zixng JAR  
    我们可以去官网,如果是Android Studio的话也可以在线搜索zxing jar,导入完成后别忘了ADD library。

  • res文件  

  • drawable  
    文件中主要放的是一些我们显示界面的图片和一些点击按钮的background

  • layout  
    activityqrcodecapture_layout.xml是zxing扫描的主界面,另外两个布局就是我们在开始图片中看到的,一个头部,一个脚部的布局

  • colors,dis,strings,styles,raw,xml  
    这些是zxing中一些类的资源文件和我们自定义布局的一些资源文件,不导入会报错,raw是我们扫描完成后的音效,我们也可以根据需求改成自己的音效(但是要注意的是文件格式和名字尽量要相同,避免出错和资源找不到),xml就是zxing用到的资源文件,我们直接复制过来就行。

    PS:如果你是从官网拷贝,那么你自需要拷贝和我一样的就行。我这里只是多了一些drawwable中的布局图片和头部脚部2个布局

  • 关键类

  • app  
    CaptureActivity 主要是我们的扫码界面,在这里我们引入我们自己的头部脚部布局,并给控件点击事件,在这个类中我们重点看这几个方法:

    /**
    * 闪光灯点击事件
    */

   private OnClickListener click = new OnClickListener() {
       @Override
       public void onClick(View v)
{
           int id = v.getId();
           if (id == R.id.button_back) { //返回按钮
               finish();
           } else if (id == R.id.flash_btn) { //打开关闭闪光灯
               if (!isFlash) {
                   CameraManager.get().turnLightOn();
               } else {
                   CameraManager.get().turnLightOff();
               }
               isFlash = !isFlash;
           } else if (id == R.id.photo_btn) { //扫描二维码图片
               // 打开手机中的相册
               Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); // "android.intent.action.GET_CONTENT"
               innerIntent.setType("image/*");
               //封装intent
               Intent wrapperIntent = Intent.createChooser(innerIntent, "选择二维码图片");
               startActivityForResult(wrapperIntent, REQUEST_CODE);
           } else if (id == R.id.qrcode_btn) {
               // 跳转到生成二维码页面
               Bitmap b = createQRCode();
               Intent intent = getIntent();
               intent.putExtra("QR_CODE", b);
               setResult(200, intent);
               finish();
           }
       }
   };

所有扫码界面的点击事件都在这个Activity中,可以看到zxing给我做了比较好的封装,只需要2行代码我们就可以控制闪光灯的开关。扫描图片二维码的点击事件也比较简单我们自需要打开相册。并用startActivityForResult启动相册。

 @Override
   protected
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值