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

Connie ·
更新时间:2024-09-21
· 819 次阅读

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中的 BarcodeEncoderencodeBitmap方法

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、在监听事件中,利用IntentstartActivityForResult跳到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); } }

总结

更多内容请到github查看:https://github.com/zxing/zxing

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

您可能感兴趣的文章:Android中使用ZXing生成二维码(支持添加Logo图案)Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果(推荐)Android项目实战(二十八):使用Zxing实现二维码及优化实例Android sdutio配置Zxing进行扫码功能的实现方法Android二维码的生成与扫码-zxing示例代码



生成二维码 zxing 二维 二维码 Android

需要 登录 后方可回复, 如果你还没有账号请 注册新账号