当前位置: 首页 > news >正文

Android 中使用开源库 ZXing 生成二维码图片

在 Android 中生成二维码是一个比较常见的功能,可以使用开源库 ZXing(Zebra Crossing)库来实现,这是一个非常流行的二维码生成和扫描库。

1、添加依赖库

  • 在 app/build.gradle.kt 中添加依赖库。
dependencies { ......implementation("com.google.zxing:core:3.5.3")implementation("com.journeyapps:zxing-android-embedded:4.3.0")
}

2、创建 QRCodeUtil 工具类

  • 创建一个工具类来封装二维码生成的逻辑。
package com.android.exampleimport android.graphics.Bitmap
import android.graphics.Color
import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
import com.google.zxing.WriterException
import com.google.zxing.qrcode.QRCodeWriter
import java.util.EnumMapobject QRCodeUtil {/*** 根据内容生成二维码图片*/fun generateQRCode(content: String, width: Int, height: Int): Bitmap? {val qrCodeWriter = QRCodeWriter()val hints: MutableMap<EncodeHintType, Any?> = EnumMap(EncodeHintType::class.java)hints[EncodeHintType.CHARACTER_SET] = "UTF-8"// 设置二维码边距hints[EncodeHintType.MARGIN] = 1try {val bitMatrix =qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints)val pixels = IntArray(width * height)for (y in 0..<height) {for (x in 0..<width) {if (bitMatrix[x, y]) {pixels[y * width + x] = Color.BLACK} else {pixels[y * width + x] = Color.WHITE}}}return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.ARGB_8888)} catch (e: WriterException) {e.printStackTrace()}return null}
}

3、使用工具类生成二维码

  • Activity 中调用 QRCodeUtil 工具类来生成二维码,并显示在 ImageView 控件中。
package com.android.exampleimport android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.android.repairmanagement.databinding.ActivityMainBindingclass MainActivity: AppCompatActivity() {private lateinit var viewBinding: ActivityMainBindingoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)viewBinding = ActivityMainBinding.inflate(layoutInflater)setContentView(viewBinding.root)val content = "http://www.example.cn/main"// 生成 200x200 的二维码图片val qrCodeBitmap = QRCodeUtil.generateQRCode(content, 200, 200)viewBinding.imageView.setImageBitmap(qrCodeBitmap)}
}
http://www.dtcms.com/a/351883.html

相关文章:

  • 实训日志day28
  • 人工智能-python-深度学习-参数初始化与损失函数
  • Redis核心机制解析:数据结构、线程模型与内存管理策略
  • Axios多实例封装
  • 产品运营必备职场通用能力及提升攻略,一文说明白
  • 人工智能之数学基础:离散型随机变量的概率分布有哪些?
  • windows下配置lua环境
  • KubeBlocks for Kafka 揭秘
  • 100种交易系统(6)均线MA识别信号与杂音
  • 部署本地模型,使用cherry-studio测试本地模型和云端模型
  • 【最短路问题转换/拓扑排序+dp】P1807 最长路
  • 广度优先遍历-BFS
  • 【跨国数仓迁移最佳实践7】基于MaxCompute多租的大数据平台架构
  • springboot实现合同生成
  • Odoo 企业版用户手册[新版] 前言 00.3-企业版功能模块全景图
  • C语言 指针
  • 消防设施安全员证核心考点:消防设施操作与维护高频知识点汇总
  • 聊聊测试覆盖率与测试质量之间的关系
  • 使用powerquery处理数据,取时间或者日期之前的
  • conda环境--相关记录
  • THM TryHack3M Subscribe WP
  • 科技信息差(8.26)
  • 亚马逊云科技免费套餐新政解析与实战:数据分析与可视化平台
  • Slice-100K:推动AI驱动的CAD与3D打印创新的多模态数据集
  • Mysql 判断查询条件索引是否生效步骤,使用说明,示例演示
  • 集成电路学习:什么是ResNet深度残差网络
  • Redis高级篇:在Nginx、Redis、Tomcat(JVM)各环节添加缓存以实现多级缓存
  • Docker-Docker思想
  • 软考-系统架构设计师 计算机系统基础知识详细讲解
  • 今日科技热点 | AI加速变革,量子计算商用化,5G应用新机遇