Android添加二维码扫描zxing

一、简介

  • 现在APP的扫码功能很普遍,也有一些APP会有生成二维码的需求。目前Android大部分是集成了zxing这个开源项目的扫码功能。

  • 开源项目地址

    Android添加二维码扫描zxing_第1张图片
  • 该项目功能很多,我们仅仅是用到里面Android的部分。早已有一些大神将核心的扫描等功能提取出来了。我们只需要集成到项目中使用即可。

  • 现在已经到3.3版本,修复了旧版本很多bug,有的bug甚至会导致APP奔溃!建议升级到新版本。

二、集成方法

  • QrCodeScan 这里已经集成好了一个Demo,只需按照以下步骤将此项目中的内容复制导入即可。

  • Demo默认界面

    Android添加二维码扫描zxing_第2张图片
  • 打开了扫描界面,这个界面后面可以自己根据需求定制修改。

    Android添加二维码扫描zxing_第3张图片
  • 生成二维码

    Android添加二维码扫描zxing_第4张图片
  • 先下载上面的Demo

  • 在项目的build.gradle中添加依赖 com.google.zxing:core:3.3.0

  • 将整个包 com.google.zxing(包含路径)复制到自己的项目下。

  • 复制res下的资源文件,注意不要覆盖掉了自己项目里的内容。可以将内容复制到对应的文件里边。

    1. raw下的beep.ogg。音频文件CaptureActivity中使用,若不想用则可以自行修改CaptureActivity。

    2. value 下的attrs文件。

    3. value下的ids.xml文件。

    4. value下的string内容。

    5. value下的color内容。

    6. layout下的Activity_scanner 复制到你的layout下。

  • 在清单文件里注册Activity、添加权限


     
  
 
  
  

三、使用

  • 生成二维码

    Bitmap mBitmap = EncodingHandler.createQRCode("www.baidu.com", 300);//300表示宽高
    
  • 扫描二维码调用

    Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
    startActivityForResult(intent, REQUEST_CODE);
    
  • 扫描结果回调,重写方法onActivityResult

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          super.onActivityResult(requestCode, resultCode, data);
          if (resultCode == RESULT_OK) { //RESULT_OK = -1
              Bundle bundle = data.getExtras();
              String scanResult = bundle.getString("result");
              Toast.makeText(MainActivity.this, scanResult, Toast.LENGTH_LONG).show();
          }
      }
    

四、部分源码类介绍

  • CaptureActivity Zxing暴露出来进行调用的界面,在handleDecode方法中对扫码成功后的动作进行处理。

  • CameraManager getFramingRect()方法,定义了扫描的区域,可以自己修改。

  • ViewfinderView ZXing扫码窗口的绘制。

    private void drawTextInfo(Canvas canvas, Rect frame)
    修改文本绘制的位置

    private void drawLaserScanner(Canvas canvas, Rect frame)
    修改扫描线的样式。注意若使用paint.setShader(Shader shader) 方法,一定要在绘制完成后调用paint.setShader(null)。以免绘制信息出错。

  • CameraConfigurationManager 修改横竖屏、处理变形效果的核心类。

  • DecodeHandler.decode ZXing解码的核心类

  • CaptureActivityHandler

    当DecodeHandler.decode完成解码后,系统会向CaptureActivityHandler发消息。如果编码成功则调用CaptureActivity.handleDecode方法对扫描到的结果进行分类处理。

  • 如有不对的地方,欢迎大神指正。

你可能感兴趣的:(Android添加二维码扫描zxing)