Android利用ZXing扫描二维码的实例代码解析

 更新时间:2016年12月12日 11:36:08   作者:樊亚风  
这篇文章主要介绍了Android利用ZXing扫描二维码的实例解析,代码简单易懂,非常不错,需要的朋友可以参考下

相关阅读:

Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题

此项目源码地址:请点击这里

这里写图片描述

看一下zxing的项目结构,我这里直接拿过来用的

这里写图片描述 

看一下扫码的activity:

package com.fanyafeng.barcode.activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.fanyafeng.barcode.R;
import com.fanyafeng.barcode.BaseActivity;
import com.fanyafeng.barcode.util.ImageUtil;
import com.fanyafeng.barcode.zxing.activity.CaptureActivity;
import com.fanyafeng.barcode.zxing.activity.CodeUtils;
//需要搭配baseactivity,这里默认为baseactivity,并且默认Baseactivity为包名的根目录
public class ScanCodeActivity extends BaseActivity {
  /**
   * 扫描跳转Activity RequestCode
   */
  public static final int REQUEST_CODE = 111;
  /**
   * 选择系统图片Request Code
   */
  public static final int REQUEST_IMAGE = 112;
  /**
   * 请求CAMERA权限码
   */
  public static final int REQUEST_CAMERA_PERM = 101;
  private TextView tvResult;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_scan_code);
//这里默认使用的是toolbar的左上角标题,如果需要使用的标题为中心的采用下方注释的代码,将此注释掉即可
    title = getString(R.string.title_activity_scan_code);
    initView();
    initData();
  }
  //初始化UI空间
  private void initView() {
    tvResult = (TextView) findViewById(R.id.tvResult);
  }
  //初始化数据
  private void initData() {
  }
  @Override
  public void onClick(View v) {
    super.onClick(v);
    switch (v.getId()) {
      case R.id.btnScan:
        Intent intent = new Intent(getApplication(), CaptureActivity.class);
        startActivityForResult(intent, REQUEST_CODE);
//        本地扫描,识别相册中的二维码
//        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
//        intent.addCategory(Intent.CATEGORY_OPENABLE);
//        intent.setType("image/*");
//        startActivityForResult(intent, REQUEST_IMAGE);
        break;
    }
  }
  @Override
  protected void onActivityResult(final int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, 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);
          Toast.makeText(this, "解析结果:" + result, Toast.LENGTH_LONG).show();
          tvResult.setText(result);
        } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) {
          Toast.makeText(ScanCodeActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
        }
      }
    }
    /**
     * 选择系统图片并解析
     */
    else if (requestCode == REQUEST_IMAGE) {
      if (data != null) {
        Uri uri = data.getData();
        try {
          CodeUtils.analyzeBitmap(ImageUtil.getImageAbsolutePath(this, uri), new CodeUtils.AnalyzeCallback() {
            @Override
            public void onAnalyzeSuccess(Bitmap mBitmap, String result) {
              Toast.makeText(ScanCodeActivity.this, "解析结果:" + result, Toast.LENGTH_LONG).show();
              tvResult.setText(result);
            }
            @Override
            public void onAnalyzeFailed() {
              Toast.makeText(ScanCodeActivity.this, "解析二维码失败", Toast.LENGTH_LONG).show();
            }
          });
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    } else if (requestCode == REQUEST_CAMERA_PERM) {
      Toast.makeText(this, "从设置页面返回...", Toast.LENGTH_SHORT).show();
    }
  }
}

注释中有本地二维码的识别

以上所述是小编给大家介绍的Android利用ZXing扫描二维码的实例代码解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android LeakCanary检测内存泄露原理

    Android LeakCanary检测内存泄露原理

    这篇文章主要介绍了分析LeakCanary检测内存泄露原理,帮助大家更好的理解和学习使用Android开发,感兴趣的朋友可以了解下
    2021-03-03
  • Android利用SeekBar实现简单音乐播放器

    Android利用SeekBar实现简单音乐播放器

    这篇文章主要为大家详细介绍了Android利用SeekBar实现简单音乐播放器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Kotlin by关键字作用及使用介绍

    Kotlin by关键字作用及使用介绍

    Kotlin 中的 by 关键字在 Java 中是没有的,这使我对它感到非常陌生。Kotlin 中为什么要新增 by 关键字呢?by 关键字在 Kotlin 中是如何使用的?本文会介绍 by 关键字的使用分类,具体的示例,Kotlin 内置的 by 使用,希望能够帮助到大家
    2022-10-10
  • Android ListView实现下拉顶部图片变大效果

    Android ListView实现下拉顶部图片变大效果

    这篇文章主要为大家详细介绍了Android ListView实现下拉顶部图片变大,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android实现页面跳转的全过程记录

    Android实现页面跳转的全过程记录

    对于android软件开发初级学习者来说,简单的页面跳转是必学的,这篇文章主要给大家介绍了关于Android实现页面跳转的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • Android动态更新Menu菜单的实现过程

    Android动态更新Menu菜单的实现过程

    菜单是用户界面中最常见的元素之一,使用非常频繁,下面这篇文章主要给大家介绍了关于Android动态更新Menu菜单的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • Android图片加载框架Gilde源码层深入分析

    Android图片加载框架Gilde源码层深入分析

    Glide就像Picasso,可以从多个源去加载和显示图片,同时也兼顾缓存和在做图片处理的时候维持一个低内存消耗。它已经在Google官方APP中使用了,就和Picasso一样受欢迎
    2022-11-11
  • Android10.0实现本地音乐播放(附源码下载)

    Android10.0实现本地音乐播放(附源码下载)

    这篇文章主要介绍了Android10.0实现本地音乐播放(附源码下载),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Android开发之ListView、GridView 详解及示例代码

    Android开发之ListView、GridView 详解及示例代码

    本文主要介绍Android开发之ListView、GridView,这里整理了相关资料及简单示例代码,帮助大家学习参考,有需要的小伙伴可以参考下
    2016-08-08
  • Android使用URL读取网络资源的方法

    Android使用URL读取网络资源的方法

    这篇文章主要为大家详细介绍了Android使用URL读取网络资源的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论