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.pswp.cn/news/920307.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/920307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue 如何使用 vxe-table 来实现跨表拖拽,多表联动互相拖拽数据

vue 如何使用 vxe-table 来实现跨表拖拽&#xff0c;多表联动互相拖拽数据 row-drag-config.isCrossTableDrag 启用跨表格、多表格互相拖拽&#xff1b;跨表拖拽需要确保数据主键不重复&#xff0c;通过 row-config.keyField 指定主键字段名 查看官网&#xff1a;https://vxe…

微生产力革命:AI解决生活小任务分享会

微生产力革命的概念微生产力革命指利用AI技术高效解决日常琐碎任务&#xff0c;释放时间与精力。其核心在于将重复性、低价值的事务自动化&#xff0c;聚焦创造性或高价值活动。AI解决生活小任务的典型场景健康管理 AI健身助手可定制个性化训练计划&#xff0c;通过摄像头实时纠…

标量、向量、矩阵和张量的区别

注&#xff1a;本文为 “标量、向量、矩阵和张量的区别” 相关合辑。 英文引文&#xff0c;机翻未校。 如有内容异常&#xff0c;请看原文。 Difference Between Scalar, Vector, Matrix and Tensor 标量、向量、矩阵和张量的区别 Last Updated : 06 Aug, 2025 In the conte…

VScode,设置自动保存

在搜索框输入“autoSave”或VSCode提供以下自动保存选项&#xff1a; 在搜索框输入“autoSave” Off&#xff1a;禁用自动保存。 On Focus Change&#xff1a;当您将焦点从编辑器移开时自动保存。 On Window Change&#xff1a;当您切换窗口选项卡或编辑器时自动保存。 After D…

2025.8.27链表_链表逆置

链表中的指针只是用来标记&#xff0c;具体连接方式&#xff0c;是按照node.next链接。JAVA中头节点存东西&#xff0c;不是空的。核心原理&#xff1a;Java 的参数传递是"值传递"&#xff0c;但对象引用是"值传递引用"也就是传过来了ListNode head。headh…

ssc37x平台的音频应用demo

//ao_test.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include

PPT处理控件Aspose.Slides教程:在.NET中开发SVG到EMF的转换器

SVG和EMF都是基于矢量的格式。许多传统的 CAD 和报告工具仍然倾向于使用 EMF 文件格式&#xff0c;因为它具有更广泛的兼容性。如果您正在开发一个 .NET 项目&#xff0c;并希望实现自动化&#xff0c;使 SVG 到 EMF 的转换变得轻松便捷。Aspose.Slides for .NET是一个功能强大…

深入理解HTTP:请求、响应与状态码解析

深入理解HTTP&#xff1a;请求、响应与状态码解析一&#xff1a;概述二&#xff1a;协议版本三&#xff1a;协议详解1&#xff09;请求报文2&#xff09;响应报文四&#xff1a;状态码1&#xff09;1xx&#xff1a;信息状态码2&#xff09;2xx&#xff1a;成功状态码3&#xff…

浏览器输入网址回车后,访问网页全流程解析!

你在地址栏敲下 https://baidu.com.com 并回车&#xff0c;几百毫秒内发生了很多事&#xff1a;浏览器先想“这个域名的 IP 我记得吗”&#xff0c;接着去找 DNS&#xff1b;建立连接时还要握个手&#xff08;TCP/QUIC&#xff09;顺便打个招呼&#xff08;TLS 证书校验、ALPN …

[Linux]学习笔记系列 -- mm/percpu

文章目录mm/percpu.c Per-CPU Variables Management Per-CPU数据管理的核心实现历史与背景这项技术是为了解决什么特定问题而诞生的&#xff1f;它的发展经历了哪些重要的里程碑或版本迭代&#xff1f;目前该技术的社区活跃度和主流应用情况如何&#xff1f;核心原理与设计它的…

企微会话风控「智脑」:源雀SCRM的AI合规守护引擎

一&#xff1a;功能概述源雀SCRM会话风控功能是一款专为企业客户关系管理设计的智能风控解决方案&#xff0c;通过双重审计机制保障企业会话合规性&#xff0c;发送违规内容及时提醒通知企业负责人。二&#xff1a;核心功能1. 普通风控审计基于Lucene全文关键词检索&#xff1a…

Java岗位供过于求,如何破局?

程序员面试背八股&#xff0c;可以说是现在互联网开发岗招聘不可逆的形式了&#xff0c;其中最卷的当属Java&#xff01;&#xff08;网上动不动就是成千上百道的面试题总结&#xff09;你要是都能啃下来&#xff0c;平时技术不是太差的话&#xff0c;面试基本上问题就不会太大…

白话FNN、RNN、Attention和self-attention等

我尝试同过炸酱面的例子,让所有人都能理解Transformer的核心Self-Attention。你在做老北京炸酱面的酱,食谱包括一系列步骤:准备食材(干黄酱、甜面酱、猪肉、葱姜等)、洗菜、切菜(葱姜蒜等)、炒肉,调和干黄酱、甜面酱、凉水、酱油后,加入锅中,慢炖成酱。我们将从FNN开…

路由基础(一):IP地址规划

###IPv4地址 IPv4地址分成网络部分和主机部分 IPv4地址根据定义可分为&#xff1a; A类地址 a. 第一字节的第一位为0 b. 第一字节的数值范围为1-126B类地址 a. 第一字节的第一和第二位为10的一组地址 b. 第一字节的数值范围为128-191C类地址 a. 第一字节的第一、第二和第三位为…

Content-Type是application/x-www-form-urlencoded表示从前端到后端提交的是表单的形式

Content-Type: application/x-www-form-urlencoded 就是表示前端向后端提交的是表单&#xff08;form&#xff09;数据的形式。✅ 精确解释&#xff1a;这个 Content-Type 是 HTML 表单&#xff08;form&#xff09;默认的提交编码方式&#xff0c;它的名字就可以拆解理解&…

一、添加Viewport3DX,并设置相机、灯光

后续主要介绍使用高性能Wpf.SharpDX版本的使用。 其核心组件包括: Viewport3DX 控件:作为渲染视口,管理相机、场景元素、输入事件和渲染主机。 CameraController:封装相机交互逻辑,实现旋转、缩放、平移等操作。 RenderHost:SharpDX 的抽象,负责 GPU 渲染,支持多种渲染…

AI生成音乐模型发展现状与前景

第一章 引言与市场概述人工智能音乐生成技术正在经历一个前所未有的爆发期&#xff0c;从实验室的技术演示迅速发展为商业化的成熟产品。根据Digital Ocean 2025年的最新报告&#xff0c;全球AI音乐市场预计将从2023年的39亿美元增长到2033年的387亿美元&#xff0c;年复合增长…

Oh My Zsh + Tabby 终端配置指南

zsh Tabby 终端配置指南现代化终端环境搭建&#xff0c;提升开发效率的完整方案&#x1f3af; 方案概述 组合架构&#xff1a;Tabby (终端模拟器) zsh (Shell) Oh My Zsh (框架) Powerlevel10k (主题) 为什么选择这个组合&#xff1f; 跨平台统一&#xff1a;Windows/macOS…

宝石组合(蓝桥杯)

发现规律很重要&#xff0c;推荐这篇文章 讲解<——————看这位大佬的讲解&#xff0c;很清楚 &#xff08;在文末想和聪明的你讨论一个问题&#xff0c;盼望您的讨论与解答&#xff09; #include <iostream> #include <vector> #include <algorithm&…

Linux 系统CPU-IO-网络-内核参数的调优

目录 重点工具与功能 一、CPU 资源调优 1.1 调整进程优先级&#xff08;nice 值&#xff09; 1.2 设置 CPU 亲和力&#xff08;taskset&#xff09; 1.3 cpu命令描述 1.4 使用 vmstat 分析系统瓶颈 二、磁盘 I/O 调优 2.1 ulimit 资源限制 2.2 测试磁盘速度 三、内核参…