Refactor createQRCode
This commit is contained in:
@@ -670,7 +670,7 @@ object AngConfigManager {
|
|||||||
if (TextUtils.isEmpty(conf)) {
|
if (TextUtils.isEmpty(conf)) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return Utils.createQRCode(conf)
|
return QRCodeDecoder.createQRCode(conf)
|
||||||
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import android.graphics.BitmapFactory
|
|||||||
import com.google.zxing.*
|
import com.google.zxing.*
|
||||||
import com.google.zxing.common.GlobalHistogramBinarizer
|
import com.google.zxing.common.GlobalHistogramBinarizer
|
||||||
import com.google.zxing.common.HybridBinarizer
|
import com.google.zxing.common.HybridBinarizer
|
||||||
|
import com.google.zxing.qrcode.QRCodeWriter
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -13,6 +14,36 @@ import java.util.*
|
|||||||
object QRCodeDecoder {
|
object QRCodeDecoder {
|
||||||
val HINTS: MutableMap<DecodeHintType, Any?> = EnumMap(DecodeHintType::class.java)
|
val HINTS: MutableMap<DecodeHintType, Any?> = EnumMap(DecodeHintType::class.java)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* create qrcode using zxing
|
||||||
|
*/
|
||||||
|
fun createQRCode(text: String, size: Int = 800): Bitmap? {
|
||||||
|
try {
|
||||||
|
val hints = HashMap<EncodeHintType, String>()
|
||||||
|
hints[EncodeHintType.CHARACTER_SET] = "utf-8"
|
||||||
|
val bitMatrix = QRCodeWriter().encode(text,
|
||||||
|
BarcodeFormat.QR_CODE, size, size, hints)
|
||||||
|
val pixels = IntArray(size * size)
|
||||||
|
for (y in 0 until size) {
|
||||||
|
for (x in 0 until size) {
|
||||||
|
if (bitMatrix.get(x, y)) {
|
||||||
|
pixels[y * size + x] = 0xff000000.toInt()
|
||||||
|
} else {
|
||||||
|
pixels[y * size + x] = 0xffffffff.toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val bitmap = Bitmap.createBitmap(size, size,
|
||||||
|
Bitmap.Config.ARGB_8888)
|
||||||
|
bitmap.setPixels(pixels, 0, size, 0, 0, size, size)
|
||||||
|
return bitmap
|
||||||
|
} catch (e: Exception) {
|
||||||
|
e.printStackTrace()
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 同步解析本地图片二维码。该方法是耗时操作,请在子线程中调用。
|
* 同步解析本地图片二维码。该方法是耗时操作,请在子线程中调用。
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -4,13 +4,7 @@ import android.content.ClipboardManager
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.text.Editable
|
import android.text.Editable
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import com.google.zxing.WriterException
|
|
||||||
import android.graphics.Bitmap
|
|
||||||
import com.google.zxing.BarcodeFormat
|
|
||||||
import com.google.zxing.qrcode.QRCodeWriter
|
|
||||||
import com.google.zxing.EncodeHintType
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.collections.HashMap
|
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.Configuration.UI_MODE_NIGHT_MASK
|
import android.content.res.Configuration.UI_MODE_NIGHT_MASK
|
||||||
@@ -171,36 +165,6 @@ object Utils {
|
|||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* create qrcode using zxing
|
|
||||||
*/
|
|
||||||
fun createQRCode(text: String, size: Int = 800): Bitmap? {
|
|
||||||
try {
|
|
||||||
val hints = HashMap<EncodeHintType, String>()
|
|
||||||
hints[EncodeHintType.CHARACTER_SET] = "utf-8"
|
|
||||||
val bitMatrix = QRCodeWriter().encode(text,
|
|
||||||
BarcodeFormat.QR_CODE, size, size, hints)
|
|
||||||
val pixels = IntArray(size * size)
|
|
||||||
for (y in 0 until size) {
|
|
||||||
for (x in 0 until size) {
|
|
||||||
if (bitMatrix.get(x, y)) {
|
|
||||||
pixels[y * size + x] = 0xff000000.toInt()
|
|
||||||
} else {
|
|
||||||
pixels[y * size + x] = 0xffffffff.toInt()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val bitmap = Bitmap.createBitmap(size, size,
|
|
||||||
Bitmap.Config.ARGB_8888)
|
|
||||||
bitmap.setPixels(pixels, 0, size, 0, 0, size, size)
|
|
||||||
return bitmap
|
|
||||||
} catch (e: WriterException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* is ip address
|
* is ip address
|
||||||
*/
|
*/
|
||||||
@@ -274,7 +238,7 @@ object Utils {
|
|||||||
if (value != null && Patterns.WEB_URL.matcher(value).matches() || URLUtil.isValidUrl(value)) {
|
if (value != null && Patterns.WEB_URL.matcher(value).matches() || URLUtil.isValidUrl(value)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
} catch (e: WriterException) {
|
} catch (e: Exception) {
|
||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user