安卓 二维码

人生处万类,知识最为贤。这篇文章主要讲述安卓 二维码相关的知识,希望能为你提供帮助。
◆android-zxingLibrary 
框架特性介绍集成方便
可打开默认二维码扫描页面
支持对图片Bitmap的扫描功能
支持对UI的定制化操作
支持对条形码的扫描功能
支持生成二维码操作
支持控制闪光灯开关
代码部分集成到项目:
S1.添加依赖 compile ‘cn.yipianfengye.android:zxing-library:2.2‘或导入library源码库;
S2.初始化ZXingLibrary.initDisplayOpinion(this);
S3.调用logger;
 
API:

使用默认方式
打开默认二维码扫描界面:
              Intent intent = new Intent(getApplication(), CaptureActivity.class);
              startActivityForResult(intent, REQUEST_CODE);
接受结果
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
              /**
                * 处理二维码扫描结果
                */
              if (requestCode == REQUEST_CODE) {
                      //处理扫描结果(在界面上显示)
                      if (null != data) {
                              Bundle bundle = data.getExtras();
                              if (bundle == null) {
                                      return;
                              }
                              if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) {
                                      String result = bundle.getString(CodeUtils.RESULT_STRING);
                                      tvScanMsg.setText(result);
                                      Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show();
                              } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
                                      Toast.makeText(mContext, "解析二维码失败", Toast.LENGTH_LONG).show();
                              }
                      }
              }
}
自定义方式
添加CaptureFragment替换扫描布局区域
              captureFragment = new CaptureFragment();
              // 为二维码扫描界面设置定制化界面
              CodeUtils.setFragmentArgs(captureFragment, R.layout.scan_area_layout);
              captureFragment.setAnalyzeCallback(analyzeCallback);
              getSupportFragmentManager().beginTransaction().replace(R.id.fl_scan_area, captureFragment).commit();
自定义扫描布局
< ?xml version="1.0" encoding="utf-8"?>
< FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" >
 
      < SurfaceView
              android:id="@+id/preview_view"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              />
 
      < com.uuzuche.lib_zxing.view.ViewfinderView
              android:id="@+id/viewfinder_view"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
【安卓 二维码】              app:inner_width="200dp"
              app:inner_height="200dp"
              app:inner_margintop="25dp"
              app:inner_corner_color="@color/red"
              app:inner_corner_length="30dp"
              app:inner_corner_width="5dp"
              app:inner_scan_bitmap="@drawable/scan_image"
              app:inner_scan_speed="10"
              app:inner_scan_iscircle="false"
              />
< /FrameLayout>
扫描结果回调的处理
      /**
        * 二维码解析回调函数
        */
      CodeUtils.AnalyzeCallback analyzeCallback = new CodeUtils.AnalyzeCallback() {
              @Override
              public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
                      FwLog.d(result);
                      onScanFinish(result);
              }
 
              @Override
              public void onAnalyzeFailed() {
                      FwLog.d("failed...");
                      onScanFinish("");
              }
      };
 
      private void onScanFinish(String result){
              Intent resultIntent = new Intent();
              Bundle bundle = new Bundle();
              bundle.putInt(CodeUtils.RESULT_TYPE, CodeUtils.RESULT_SUCCESS);
              bundle.putString(CodeUtils.RESULT_STRING, result);
              resultIntent.putExtras(bundle);
              setResult(RESULT_OK, resultIntent);
              finish();
      }
 
支持自定义扫描属性
< declare-styleable name="innerrect">
              < attr name="inner_width" format="dimension"/> < !-- 控制扫描框的宽度 -->
              < attr name="inner_height" format="dimension"/> < !-- 控制扫描框的高度 -->
              < attr name="inner_margintop" format="dimension" /> < !-- 控制扫描框距离顶部的距离 -->
              < attr name="inner_corner_color" format="color" /> < !-- 控制扫描框四角的颜色 -->
              < attr name="inner_corner_length" format="dimension" /> < !-- 控制扫描框四角的长度 -->
              < attr name="inner_corner_width" format="dimension" /> < !-- 控制扫描框四角的宽度 -->
              < attr name="inner_scan_bitmap" format="reference" /> < !-- 控制扫描图 -->
              < attr name="inner_scan_speed" format="integer" /> < !-- 控制扫描速度 -->
              < attr name="inner_scan_iscircle" format="boolean" /> < !-- 控制小圆点是否展示 -->
      < /declare-styleable>
 
参考:
      https://github.com/yipianfengye/android-zxingLibrary
 
◆BGAQRCode-Android 
框架特性介绍功能比较完善强大,未集成
ZXing 扫描二维码
ZXing 识别图库中的二维码图片
可以设置用前置摄像头扫描
可以控制闪光灯,方便夜间使用
可以定制各式各样的扫描框
可定制全屏扫描或只识别扫描框区域内的二维码
ZBar 扫描二维码
代码部分集成到项目:
S1.添加依赖 compile ‘cn.yipianfengye.android:zxing-library:2.2‘或导入library源码库;
S2.初始化ZXingLibrary.initDisplayOpinion(this);
S3.调用logger;
 
API:
使用默认方式
打开默认二维码扫描界面:
 
 
支持自定义扫描属性
< declare-styleable name="innerrect">
 
 
参考:
      https://github.com/bingoogolapple/BGAQRCode-Android  
 
◆ZxingGenerator 
效果
框架特性介绍花式二维码生成,提供了6种样式。已封装成工具类,使用方便。
代码部分集成到项目:
S1.添加依赖 zxing jar包;
 
API:
工具类
QRCodeUtils
QRCodeUtils.createQRCode("http://www.tmtpost.com/2536837.html")
 
参考:
      vivian8725118/ZxingGenerator 6种样式
 
 
 
 
其他项目
      Google官方项目
      https://github.com/zxing/zxing
      另一个使用较多的,提供了几种扫描方式,封装不完善,需要做一些定制修改
      https://github.com/journeyapps/zxing-android-embedded

    推荐阅读