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

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.xdnf.cn/news/18902.html

相关文章:

  • Android 播放MP4格式,大视频 几个小时的视频点击快进键视频进度会倒退一秒
  • 基于 Elasticsearch 解决分库分表查询难题
  • MySQL 索引:结构、对比与操作实践指南
  • OpenAI o1:OpenAI最新推出的AI大语言模型,更擅长推理也更贵
  • 使用JDK11标准 实现 图数据结构的增删查改遍历 可视化程序
  • Linux应急响应一般思路(三)
  • Vulkan 学习路线图
  • 【机器学习】(11) --回归树算法
  • 算法题打卡力扣第167题:两数之和——输入有序数组(mid)
  • AMH和cyberpanel等管理软件,哪个里面可以部署AI软件?
  • week4-[二维数组]平面上的点
  • 文件读取结束的判定方法:正确使用feof函数避免文件读取错误
  • 代码随想录算法训练营30天 | ​​01背包理论基础、416. 分割等和子集
  • Pandas 高效数据处理:apply、向量化与分组
  • Android用Coil 3检查媒体资源是否有效,Kotlin
  • LeetCode 面试经典 150_双指针_验证回文串(25_125_C++_简单)(双指针)
  • 基于多通道同步分析的智能听诊系统应用程序
  • k8s数据存储
  • k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
  • Rust Async 异步编程(六):Pin 和 Unpin
  • Python实现点云投影到直线、平面、柱面和球面
  • ComfyUI AI一键换装工作流无私分享
  • 《分布式系统跨服务数据一致性Bug深度复盘:从现象到本质的排查与破局》
  • 从“数据孤岛”到“业财融合”,外贸订单管理ERP重构一体化逻辑
  • 电气工程及其自动化的课程笔记
  • 接口自动化测试:测试用例也能自动生成
  • Vue3 + Golang Gin 实现客服实时聊天系统(WebSocket + Socket.IO 详解)
  • 【工具安装使用-Jetson】Jetson Orin Nano 刷机和踩坑总结
  • 从人工巡检到AI预警:智慧工地如何用技术重构施工安全体系
  • Flink 状态 RocksDBListState(写入时的Merge优化)