当前位置: 首页 > 编程笔记 >

Android 超简易Zxing框架 生成二维码+扫码功能

邹誉
2023-03-14
本文向大家介绍Android 超简易Zxing框架 生成二维码+扫码功能,包括了Android 超简易Zxing框架 生成二维码+扫码功能的使用技巧和注意事项,需要的朋友参考一下

zxing是一个二维码的框架。

配置

1、

implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
如果报错在这个文件的android下加上如下配置,让其支持Java1.8,不然只有1.7、1.6
(可在'app'右键---->open module settings------>Module看到)

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

2、

<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" /> 
<uses-permission android:name="android.permission.CAMERA"/>

记得点击Sync Now

生成二维码

步骤:
1、自定义一个负责生成二维码的类,方便调用,返回一个Bitmap

要点:利用Zxing中的 BarcodeEncoder 的 encodeBitmap方法

public Bitmap encodeBitmap(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) throws WriterException

encodeBitmap方法

参数 内容
contents 码的内容
format 码的类型(二维码、条形码…)
width 码的宽度
height 码的高度
hints 码的额外参数

Map<EncodeHintType, ?> hints码的额外参数
这里列举了一些常用的
这些都是Zxing中定义好的

参数 内容
EncodeHintType.ERROR_CORRECTION 设置容错率 L>M>Q>H 等级越高扫描时间越长,准确率越高
EncodeHintType.CHARACTER_SET 设置字符集
EncodeHintType.MARGIN 设置边距

QRcode类

package com.example.xianyu;
import android.graphics.Bitmap;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.journeyapps.barcodescanner.BarcodeEncoder;
import java.util.HashMap;
import java.util.Map;

public class QRcode{
  public Bitmap qrcode(String content){
  int width = 400;
  int height = 400;
    //HashMap设置二维码参数
    Map map = new HashMap();
    //  设置容错率 L>M>Q>H 等级越高扫描时间越长,准确率越高
    map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
    //设置字符集
    map.put(EncodeHintType.CHARACTER_SET,"utf-8");
    //设置外边距
    map.put(EncodeHintType.MARGIN,1);
    //利用编码器,生成二维码
    BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
    Bitmap bitmap = null;
    try {
      bitmap = barcodeEncoder.encodeBitmap(content, BarcodeFormat.QR_CODE, width, height,map);
    } catch (WriterException e) {
      e.printStackTrace();
    }
    return bitmap;
  }
}

2、在要生成二维码的Activity,调用上述类,输入二维码内容生成二维码,之后显示在ImageView组件上

MainActivity

public class MainActivity extends AppCompatActivity {
 ImageView Code;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Code = findViewById(R.id.iv_code);
    QRcode qrcode = new QRcode();
    Bitmap bitmap= qrcode.qrcode("CSDN");
    Code.setImageBitmap(bitmap);
    }

成功获得二维码内容

扫码

步骤:
1、给点击扫码的组件添加点击监听事件

2、在监听事件中,利用Intent和startActivityForResult跳到Zxing定义好的默认的扫码界面CaptureActivity中(也可以自定义扫码界面)

3、重写onActivityResult方法处理二维码返回的内容

要点:
其中的REQUEST_CODEZxing是定义好的,一定要使用这个CODE
不然在onActivityResult方法中解析二维码将会不起作用

IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

这段源码可知REQUEST_CODE要相等才会进行二维码解析,否则将会返回 null

public static IntentResult parseActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == REQUEST_CODE) {
      return parseActivityResult(resultCode, intent);
    }
    return null;
  }

设置监听:

Code.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
       startActivityForResult(intent,REQUEST_CODE);
     }
   });

重写Activity中的onActivityResult得到二维码内容,我这里只是将获得的内容进行简单的输出

@Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
      IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if(result != null) {
      if(result.getContents() == null) {
        Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
      } else {
        Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
      }
    } else {
      super.onActivityResult(requestCode, resultCode, data);
    }
    }

总结

更多内容请到html" target="_blank">github查看:https://github.com/zxing/zxing

到此这篇关于Android 超简易Zxing框架 生成二维码+扫码功能的文章就介绍到这了,更多相关Android Zxing框架生成二维码+扫码内容请搜索小牛知识库以前的文章或继续浏览下面的相关文章希望大家以后多多支持小牛知识库!

 类似资料:
  • 本文向大家介绍Android 二维码扫描和生成二维码功能,包括了Android 二维码扫描和生成二维码功能的使用技巧和注意事项,需要的朋友参考一下 在APP开发中,常遇到二维码扫描功能和生成二维码的需求。Android大部分是集成了zxing这个开源项目的扫码功能。 开源项目地址 下面给大家介绍一下具体的集成步骤 集成步骤 参考demo 1.demo展示如下: 1.1demo首页   1.2扫描界

  • 本文向大家介绍Android-Zxing实现二维码的扫描与生成,包括了Android-Zxing实现二维码的扫描与生成的使用技巧和注意事项,需要的朋友参考一下 Zxing: Zxing是一个开放源码,用java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。可以实现使用手机内置摄像头完成条形码的扫描以及解码。 github: https://github.com/zxing

  • 本文向大家介绍Android生成条形码和二维码功能,包括了Android生成条形码和二维码功能的使用技巧和注意事项,需要的朋友参考一下 背景:         随着移动互联网的普及以及智能终端设备的广泛应用,移动支付变得越来越便捷,通过扫描二维码代替传统的刷卡行为。那么作为开发者而言生成二维码成为了一项必备技能。 准备:         使用zxing包         implementatio

  • 我遵循这篇材料在Android中实现QRCode Scanner。 一步一步地,在我的应用程序中实现以下代码后,我在GingerreadOpenCameron aInterface.java类中收到错误。下面的图像是我面临的错误。 错误显示为: 以下是清单文件: 下面这个问题有人能帮我吗?

  • 在 ZBarSDK(本站下载:http://code4app.com/ios/ZBar-Barcode-Reader/4fa23f3f06f6e7ee18000000)的基础上做的一个demo,能够将字符串转换成二维码,能够通过摄像头扫描二维码。代码里面有对如何使用 ZBarSDK 的详细说明。 [Code4App.com]

  • 利用ZXing类库实现二维码生成和扫描识别的功能。可以生成不同颜色的二维码,以及圆点和矩形点形状的二维码。 二维码扫描功能,能识别本地相册的二维码。由于作者没有做屏幕适配,所以二维码生成的功能只能在4.0inch屏幕进行测试。 [Code4App.com]

  • 本文向大家介绍Android中google Zxing实现二维码与条形码扫描,包括了Android中google Zxing实现二维码与条形码扫描的使用技巧和注意事项,需要的朋友参考一下 Android中google Zxing实现二维码与条形码扫描 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,

  • 我有一个简单的代码,计划扫描二维码并将值返回给用户: 现在我知道我需要将src/com.google.zxing.client.*文件夹放在这个项目的某个地方,但是在哪里?当我将其复制粘贴到我自己的src/文件夹时,它们都有错误,而这些错误在最初的Capureactive项目中并不存在。我该如何解决这个问题?