Закруглённый QR код на kotlin в ZXing
Можно ли как-то использовать библиотеку ZXing для создания закреплённых QR кодов с логотипом посередине. Приведите пример как это можно использовать в проекте Android Studio
private fun buildTerminalUrl(terminalId: String?): String {
val tid = terminalId ?: "TERMINAL_UNKNOWN"
val base = "https://dimakokh.github.io/t-bank/"
return "$base?id=${URLEncoder.encode(tid, "utf-8")}"
}
// --- Генерация QR bitmap (ZXing core) ---
private fun generateQrBitmap(content: String, size: Int = 512, darkColor: Int = Color.BLACK, lightColor: Int = Color.WHITE): Bitmap {
val hints = hashMapOf<EncodeHintType, Any>()
hints[EncodeHintType.MARGIN] = 1
val bitMatrix: BitMatrix = MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, size, size, hints)
val w = bitMatrix.width
val h = bitMatrix.height
val bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)
for (x in 0 until w) {
for (y in 0 until h) {
bmp.setPixel(x, y, if (bitMatrix.get(x, y)) darkColor else lightColor)
}
}
return bmp
}
// --- Показать QR в ImageView (вызвать с terminalId) ---
private fun showTerminalQr(terminalId: String?, amount: Double) {
// попробуем взять сохранённый username (если у тебя есть такое)
val prefs = getSharedPreferences("tbank_prefs", MODE_PRIVATE)
val savedUsername = prefs.getString("savedUsername", null)
val iv = ivQr
val url = buildTerminalUrl(terminalId)
// для светлой темы — тёмные квадраты жёлтые на белом фоне
val dark = Color.parseColor("#000000")
val light = Color.WHITE
// если нужно учитывать тему, можно сделать check и менять цвета
val bmp = generateQrBitmap(url, 512, darkColor = dark, lightColor = light)
iv.setImageBitmap(bmp)
}