- 添加依赖:
在
build.gradle
文件中添加ZXing库的依赖:
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.google.zxing:javase:3.4.1'
- 核心代码逻辑:
import android.graphics.Bitmap
import android.graphics.Color
import com.google.zxing.BarcodeFormat
import com.google.zxing.MultiFormatWriter
import com.google.zxing.common.BitMatrix
import java.io.File
import java.io.FileOutputStream
fun generateQRCode(text: String, width: Int, height: Int, filePath: String): Boolean {
try {
// 使用MultiFormatWriter生成二维码的BitMatrix
val bitMatrix: BitMatrix = MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height)
// 将BitMatrix转换为Bitmap
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565)
for (x in 0 until width) {
for (y in 0 until height) {
bitmap.setPixel(x, y, if (bitMatrix[x, y]) Color.BLACK else Color.WHITE)
}
}
// 保存Bitmap到本地文件
val file = File(filePath)
val fos = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)
fos.flush()
fos.close()
return true
} catch (e: Exception) {
e.printStackTrace()
return false
}
}
- 关键步骤:
- 依赖添加:引入ZXing库,以便使用其二维码生成功能。
- 生成
BitMatrix
:使用MultiFormatWriter
类的encode
方法,传入要编码的文本、二维码格式(这里是BarcodeFormat.QR_CODE
)以及期望的宽度和高度,生成BitMatrix
对象,它是二维码的矩阵表示。
- 转换为
Bitmap
:通过遍历BitMatrix
的每个点,将其转换为Bitmap
的像素点,黑色表示二维码的点,白色表示背景。
- 保存到本地文件:创建目标文件,使用
FileOutputStream
将Bitmap
以指定的压缩格式(这里是PNG)写入文件。