QR-Code-Implementierung in Android
In letzter Zeit ist die Verwendung von QR-Codes immer weiter verbreitet und reicht von Zahlungen über Restaurantmenüs bis hin zu Check-in-/Check-out-Mechanismen, die mittlerweile in mehreren Büros oder Eingängen zu öffentlichen Plätzen eingesetzt werden.
Grundsätzlich erleichtert QR-Code den Prozess der Bereitstellung von Daten für Verbraucher mit einem einzigartigen Bild, das die Daten selbst darstellt, wobei die Daten vom Verbraucher verwaltet werden, um letztendlich bestimmen zu können, welche Maßnahmen ergriffen werden müssen.
Grundsätzlich handelt es sich bei QRCode nur um die Darstellung von Daten in einzigartiger Bildform.
Bei der Android-Entwicklung können wir die beiden Funktionen auf unserer Seite unabhängig voneinander implementieren lassen.
Generator
Zum Generieren von QR-Code können wir diese Bibliothek von Google verwenden.
implementation 'com.google.zxing:core:3.2.1
private fun generatedQR(value: String): Bitmap? {
val bitMatrix: BitMatrix
try {
bitMatrix = MultiFormatWriter().encode(
value,
BarcodeFormat.QR_CODE,
500, 500, null
)
} catch (e: IllegalArgumentException) {
return null
}
val bitMatrixWidth = bitMatrix.width
val bitMatrixHeight = bitMatrix.height
val pixels = IntArray(bitMatrixWidth * bitMatrixHeight)
for (y in 0 until bitMatrixHeight) {
val offset = y * bitMatrixWidth
for (x in 0 until bitMatrixWidth) {
pixels[offset + x] = if (bitMatrix.get(x, y))
ContextCompat.getColor(this, R.color.black)
else
ContextCompat.getColor(this, R.color.white)
}
}
val bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_8888)
bitmap.setPixels(pixels, 0, 500, 0, 0, bitMatrixWidth, bitMatrixHeight)
return bitmap
}
Hier kodieren wir sowohl die Daten als auch das BarcodeFormat so, wie wir es wollen bitMatrix.
val bitMatrix: BitMatrix
try {
bitMatrix = MultiFormatWriter().encode(
value,
BarcodeFormat.QR_CODE,
500, 500, null
)
} catch (e: IllegalArgumentException) {
return null
}
val bitmap = generatedQR(args)
imageView.setImageBitmap(bitmap)
Für den Scanner müssen wir diese Bibliothek verwenden.
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
val scanner = IntentIntegrator(this)
scanner.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE)
scanner.setBeepEnabled(true) //optional
scanner.initiateScan()
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == Activity.RESULT_OK) {
val result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data)
if (result != null) {
if (result.contents == null) {
toast("Cancelled !")
} else {
textView.text = "Your data from scanner is ${result.contents}" //do whatever you want with the data
}
} else {
super.onActivityResult(requestCode, resultCode, data)
}
}
}
Übrigens habe ich diesen Code vor etwa 4 Jahren in ein Projekt geschrieben. Bitte rechnen Sie mit einigen veralteten Verwendungen der Klasse/Funktion, falls vorhanden, und möglicherweise gibt es dafür einen neuen Ansatz, einer davon ist die Verwendung des ML-Kits von Jetpack.
Hier ist der vollständige Code des oben erläuterten Codes.
—

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































