Android 二维码扫描和生成二维码功能

在APP开发中,常遇到二维码扫描功能和生成二维码的需求。Android大部分是集成了zxing这个开源项目的扫码功能。 开源项目地址 下面给大家介绍一下具体的集成步骤

集成步骤

参考demo

1.demo展示如下:

1.1demo首页

1.2扫描界面

可以根据需求修改,我实际项目中界面截图如下:

1.3生成二维码

2.引入文件

2.1 下载demo,拷贝demo中的com.google.zxing5个包和com.utils包引入到自己的项目中。

2.2 拷贝本项目demo中的布局activity_scanner.xml和toolbar_scanner.xml

2.3 拷贝资源目录raw至本项目中,beep.ogg是扫描成功时的提示音。

2.4 拷贝或合并文件内容attrs.xml/colors.xml/ids.xml三个文件。

2.5 build.gradle文件中添加引用

compile 'com.google.zxing:core:3.3.0'

2.6 修改R文件引用路径 修改以下4个文件中的R文件引用地址,引用本项目的R

//com.google替换成自己项目的包名即可
com.google.zxing.activity.CaptureActivity
com.google.zxing.decoding.CaptureActivityHandler
com.google.zxing.decoding.DecodeHandler
com.google.zxing.view.ViewfinderView

3. 权限配置

3.1 AndroidManifest.xml中添加权限申请代码:

<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络权限 -->
 <uses-permission android:name="android.permission.VIBRATE" /> <!-- 震动权限 -->
 <uses-permission android:name="android.permission.CAMERA" /> <!-- 摄像头权限 -->
 <uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 自动聚焦权限 -->

4. 功能实现

完成上述集成之后,通过调用CaptureActivity就可以实现扫码功能。 MainActivity源码部分:

public class MainActivity extends AppCompatActivity {
 @BindView(R.id.openQrCodeScan)
 Button openQrCodeScan;
 @BindView(R.id.text)
 EditText text;
 @BindView(R.id.CreateQrCode)
 Button CreateQrCode;
 @BindView(R.id.QrCode)
 ImageView QrCode;
 @BindView(R.id.qrCodeText)
 TextView qrCodeText;
 //打开扫描界面请求码
 private int REQUEST_CODE = 0x01;
 //扫描成功返回码
 private int RESULT_OK = 0xA1;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 ButterKnife.bind(this);
 }
 @OnClick({R.id.openQrCodeScan, R.id.CreateQrCode})
 public void onClick(View view) {
 switch (view.getId()) {
  case R.id.openQrCodeScan:
  //打开二维码扫描界面
  if(CommonUtil.isCameraCanUse()){
   Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
   startActivityForResult(intent, REQUEST_CODE);
  }else{
   Toast.makeText(this,"请打开此应用的摄像头权限!",Toast.LENGTH_SHORT).show();
  }
  break;
  case R.id.CreateQrCode:
  try {
   //获取输入的文本信息
   String str = text.getText().toString().trim();
   if(str != null && !"".equals(str.trim())){
   //根据输入的文本生成对应的二维码并且显示出来
   Bitmap mBitmap = EncodingHandler.createQRCode(text.getText().toString(), 500);
   if(mBitmap != null){
    Toast.makeText(this,"二维码生成成功!",Toast.LENGTH_SHORT).show();
    QrCode.setImageBitmap(mBitmap);
   }
   }else{
   Toast.makeText(this,"文本信息不能为空!",Toast.LENGTH_SHORT).show();
   }
  } catch (WriterException e) {
   e.printStackTrace();
  }
  break;
 }
 }
 @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("qr_scan_result");
  //将扫描出的信息显示出来
  qrCodeText.setText(scanResult);
 }
 }
}

5. 源码分析

5.1打开二维码扫描界面

//打开二维码扫描界面
  if(CommonUtil.isCameraCanUse()){
   Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
   startActivityForResult(intent, REQUEST_CODE);
  }else{
   Toast.makeText(this,"请打开此应用的摄像头权限!",Toast.LENGTH_SHORT).show();
  }

5.2 根据输入的文本生成对应的二维码并且显示出来

try {
   //获取输入的文本信息
   String str = text.getText().toString().trim();
   if(str != null && !"".equals(str.trim())){
   //根据输入的文本生成对应的二维码并且显示出来
   Bitmap mBitmap = EncodingHandler.createQRCode(text.getText().toString(), 500);
   if(mBitmap != null){
    Toast.makeText(this,"二维码生成成功!",Toast.LENGTH_SHORT).show();
    QrCode.setImageBitmap(mBitmap);
   }
   }else{
   Toast.makeText(this,"文本信息不能为空!",Toast.LENGTH_SHORT).show();
   }
  } catch (WriterException e) {
   e.printStackTrace();
  }

5.3 扫描结果回调

@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("qr_scan_result");
  //将扫描出的信息显示出来
  qrCodeText.setText(scanResult);
 }
 }

总结

以上所述是小编给大家介绍的Android 二维码扫描和生成二维码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

您可能感兴趣的文章:

  • php生成Android客户端扫描可登录的二维码
  • Android平台生成二维码并实现扫描 & 识别功能
  • Android实现二维码扫描和生成的简单方法
  • Android中的二维码生成与扫描功能
  • Android中二维码的生成方法(普通二维码、中心Logo 二维码、及扫描解析二维码)
  • Android-Zxing实现二维码的扫描与生成
(0)

相关推荐

  • Android实现二维码扫描和生成的简单方法

    这里简单介绍一下ZXing库.ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该项目可实现的条形码编码和解码.目前支持以下格式:UPC-A,UPC-E.EAN-8,EAN-13.39码.93码.ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力. ZXing

  • php生成Android客户端扫描可登录的二维码

    本文实例为大家分享了php网页生成二维码,Android客户端扫描登录的具体代码,供大家参考,具体内容如下 使用了Github上具有扫码功能的ZXing开源库,使用了通过随机数生成二维码图片网络API,整个过程经过三步: 1.PHP网页生成二维码,相应随机数存储到数据库中: 2.Android客户端扫码,携带username保存至随机数对应的位置: 3.每隔一段时间,PHP通过Ajax轮询数据库,判断是否为空,不为空则跳转网页. 具体代码: 1. 通过随机数生成二维码图片,并执行轮询操作命令的主

  • Android平台生成二维码并实现扫描 & 识别功能

    1.二维码的前世今生 "二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构成计算机内部逻辑基础的"0"."1"比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集:每个字符占有一定的宽度:具有一定的校验功能

  • Android-Zxing实现二维码的扫描与生成

    Zxing: Zxing是一个开放源码,用java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.可以实现使用手机内置摄像头完成条形码的扫描以及解码. github: https://github.com/zxing/zxing 首先在写项目的时候,我们需要导入一个moduel,主要是从Zxing中提取的主要功能代码.其地址是: http://pan.baidu.com/s/1sk9pGmT 扫描二维码: 在点击扫描二维码的页面: startActivityForResu

  • Android中的二维码生成与扫描功能

    0. 前言 今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描.本篇旨在帮助有需求的同学快速完成二维码生成和扫描的功能. 1.    Zxing的使用 从github上下载项目后,可以看到整体代码结构如下: 我们只需将Zxing包下的所有代码copy一份到我们的项目中去,除了这些还需要zxing的jar包,最后相应的资源文件,包括values文件下的ids文件.raw文件中的资源文件(可以替换).

  • Android中二维码的生成方法(普通二维码、中心Logo 二维码、及扫描解析二维码)

    首先声明我们通篇用的都是Google开源框架Zxing,要实现的功能有三个 ,生成普通二维码.生成带有中心图片Logo 的二维码,扫描解析二维码,直接上效果图吧 首先我们需要一个这样的 Zxing 的包类似于这样 接下来需要引入资源 1.drawable 中引入图片 navbar.png 2.layout中引入camera.xml.main.xml.qrcode_capture_page.xml 3.创建raw文件夹并添加beep.ogg 扫描声音 4.合并color.xml,copy ids.

  • Android 二维码扫描和生成二维码功能

    在APP开发中,常遇到二维码扫描功能和生成二维码的需求.Android大部分是集成了zxing这个开源项目的扫码功能. 开源项目地址 下面给大家介绍一下具体的集成步骤 集成步骤 参考demo 1.demo展示如下: 1.1demo首页 1.2扫描界面 可以根据需求修改,我实际项目中界面截图如下: 1.3生成二维码 2.引入文件 2.1 下载demo,拷贝demo中的com.google.zxing5个包和com.utils包引入到自己的项目中. 2.2 拷贝本项目demo中的布局activity

  • Android扫描和生成二维码

    本文实例为大家分享了Android扫描和生成二维码的具体代码,供大家参考,具体内容如下 MainActivity.java public class MainActivity extends AppCompatActivity { private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCo

  • Android实现扫描和生成二维码

    本文实例为大家分享了Android实现扫描和生成二维码的具体代码,供大家参考,具体内容如下 需求: 就是需要把数据存放到二维码中,然后通过扫描二维码拿到数据,并展示到页面上. 功能展示: demo下载:Android扫描生成二维码 代码实现: 1.引用第三方 //AndroidX 版本 implementation 'com.king.zxing:zxing-lite:1.1.7-androidx' 2.在AndroidManifest.xml 声明CaptureActivity <activi

  • Python实现PDF扫描件生成DOCX或EXCEL功能

    目录 1.问题描述 2.实现流程 3.功能代码 3.1pdf转为图片 3.2表格图片文字识别到excel 4.案例说明 1.问题描述 应项目需求需要获取PDF扫描文件的内容,但寻遍整个网络能达到这种功能的产品,都要会员充值.苦于囊中羞涩也只好编写功能代码来实现了. 如PDF中表格图片图-1效果生成图-2 图-1 图-2 2.实现流程 整个步骤为:读取PDF文件->生成图片->ORC获取图片内容->写入Excel 3.功能代码 3.1 pdf转为图片 import fitz # pdf转为

  • Android如何实现扫描和生成二维码

    目标效果:     该例子可以扫描二维码和条形码,扫描后会将信息显示到下方的TextView中,在EditText中输入想要生成的文本,点击生成二维码,会在下方显示二维码图片. 1.二维码的扫描与生成需要一个框架,网上的框架导入后改成is Library会提示错误,把switch改成if语句错误就没有了. 2.导入框架并新建项目,把框架添加到项目中去. 3.activity_main.xml页面设置控件. activity_main.xml页面: <LinearLayout xmlns:andr

  • ios swift3.0实现二维码扫描、生成、识别示例代码

    基于swift3.0 1.扫描二维码 设置扫描会话,图层和输入输出 //设置捕捉设备 let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) do { //设置设备输入输出 let input = try AVCaptureDeviceInput(device: device) let output = AVCaptureMetadataOutput() output.setMetadataObjec

  • ios原生二维码扫描与生成的实现教程

    之前都是第三方的二维码,操作简单pod集成,美滋滋.随着公司项目越来越恶心到大,还是自己撸一个比较实在. demo的主要功能扫描二维码和生成二维码. 扫描相关类 二维码扫描需要获取摄像头并读取照片信息,因此我们需要导入系统的AVFoundation框架,创建视频会话.我们需要用到一下几个类: AVCaptureSession 会话对象.此类作为硬件设备输入输出信息的桥梁,承担实时获取设备数据的责任 AVCaptureDeviceInput 设备输入类.这个类用来表示输入数据的硬件设备,配置抽象设

  • 使用python调用zxing库生成二维码图片详解

    (1)安装Jpype 用Python调用jar包需要安装jpype扩展,在Ubuntu上可以直接使用apt-get安装jpype扩展 $ sudo apt-get install python-jpype (2) 得到zxing  jar包 使用zxing第三方库生成二维码图片,关于zxing的介绍可以看其github地址:https://github.com/zxing/zxing/. 我们可以下载源码编译安装包,也可以直接在网上下载jar包,我的jar包是直接下载的,如下: $ wget h

  • JS实现将链接生成二维码并转为图片的方法

    本文实例讲述了JS实现将链接生成二维码并转为图片的方法.分享给大家供大家参考,具体如下: <div id="code"></div> <img id="img"/> <script type="text/javascript"> var qrcode=$("#code").qrcode({ render:'canvas||table', width: 200, //宽度 heig

随机推荐