安装
使用 Gradle 将 ZXing 添加到您的 Android 项目中。
Gradle (Android)
implementation("com.google.zxing:core:3.5.3")Gradle (with image)
implementation("com.google.zxing:core:3.5.3")
implementation("com.google.zxing:javase:3.5.3")使用 Kotlin 和 ZXing 生成二维码
在 Kotlin for Android 中使用 ZXing 的代码示例。
Generate QR Code Bitmap (Android)
import android.graphics.Bitmap
import com.google.zxing.BarcodeFormat
import com.google.zxing.MultiFormatWriter
fun generateQRCode(data: String, size: Int = 300): Bitmap {
val matrix = MultiFormatWriter().encode(
data, BarcodeFormat.QR_CODE, size, size
)
return Bitmap.createBitmap(size, size, Bitmap.Config.RGB_565).apply {
for (x in 0 until size) {
for (y in 0 until size) {
setPixel(x, y, if (matrix[x, y]) 0xFF1A2B3C.toInt() else 0xFFFFFFFF.toInt())
}
}
}
}
// Usage
val qrBitmap = generateQRCode("https://qrcode.fun")Jetpack Compose QR Code
@Composable
fun QRCodeImage(
data: String,
modifier: Modifier = Modifier,
size: Int = 300
) {
val bitmap = remember(data) { generateQRCode(data, size) }
Image(
bitmap = bitmap.asImageBitmap(),
contentDescription = "QR Code",
modifier = modifier.size(200.dp)
)
}
// Usage in a Composable
@Composable
fun MyScreen() {
QRCodeImage(data = "https://qrcode.fun")
}QRCode.fun API
通过 API 在 Kotlin 中生成二维码
使用 OkHttp 或 Ktor 从 Kotlin 调用 QRCode.fun API 生成样式化二维码。
Kotlin API 集成
import okhttp3.*
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody.Companion.toRequestBody
import org.json.JSONObject
suspend fun generateQRCodeViaAPI(data: String): String {
val client = OkHttpClient()
val json = JSONObject().apply {
put("data", data)
put("width", 300)
put("height", 300)
put("type", "png")
put("margin", 10)
put("dotsOptions", JSONObject().apply {
put("color", "#1A2B3C")
put("type", "rounded")
})
put("cornersSquareOptions", JSONObject().apply {
put("color", "#8564C3")
put("type", "extra-rounded")
})
put("backgroundOptions", JSONObject().apply {
put("color", "#FFFFFF")
})
}
val request = Request.Builder()
.url("https://qrcode.fun/api/generate-qr-styled")
.post(json.toString().toRequestBody("application/json".toMediaType()))
.build()
val response = client.newCall(request).execute()
val result = JSONObject(response.body?.string() ?: "")
return result.getString("data") // base64 PNG data URL
}实时二维码预览
立即尝试使用 Kotlin 生成二维码。
二维码预览
ZXing vs API
比较在 Kotlin 中使用 ZXing 与 QRCode.fun API。
| 功能 | ZXing 库 | QRCode.fun API |
|---|---|---|
| 设置复杂度 | Gradle 依赖 + Bitmap 渲染 | 通过 OkHttp 发送单次 HTTP 请求 |
| 自定义 | 大小、纠错等级、通过 Bitmap 设置颜色 | 完整样式:颜色、形状、徽标 |
| 离线支持 | 是 | 需要互联网 |
| 维护 | Gradle 依赖更新 | 始终保持最新 |
| 输出格式 | Bitmap (Android) | PNG, SVG |
Kotlin 二维码使用场景
Kotlin 应用中二维码的常见场景。
Android 应用
在 Android 应用中生成和显示二维码,用于分享链接、联系人、Wi-Fi 凭据和支付信息。
Jetpack Compose
创建可组合的二维码组件,带有自定义样式和动画,用于现代 Android UI。
Kotlin Multiplatform
使用 QRCode.fun API 通过 Kotlin Multiplatform 在 Android、iOS 和桌面之间共享二维码生成逻辑。
后端服务
在 Ktor 或 Spring Boot Kotlin 服务中生成二维码,用于票据、发票和身份验证流程。
常见问题
关于使用 Kotlin 生成二维码的常见问题。
对于 Android,ZXing(zxing:core)是标准选择。对于 Kotlin Multiplatform 或服务端,考虑使用 QRCode.fun API 以保持跨平台一致性。