在 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.example
import 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.EnumMap
object 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] = 1
try {
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.example
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.android.repairmanagement.databinding.ActivityMainBinding
class MainActivity: AppCompatActivity() {
private lateinit var viewBinding: ActivityMainBinding
override 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)
}
}