Implémentation du code QR dans Android
Récemment, l'utilisation des codes QR s'est généralisée, allant des paiements, des menus de restaurant aux mécanismes de check-in/check-out qui ont commencé à être utilisés dans plusieurs bureaux ou entrées de lieux publics.
Fondamentalement, QR Code facilite le processus de fourniture de données aux consommateurs avec une image unique qui représente les données elles-mêmes, où les données seront gérées par le consommateur pour finalement être en mesure de déterminer les mesures à prendre.
Fondamentalement, QRCode n'est qu'une représentation de données sous forme d'images uniques.
Dans le développement Android, nous pouvons faire en sorte que les deux fonctions soient implémentées indépendamment de notre côté.
Générateur
Pour générer un code QR, nous pouvons utiliser cette bibliothèque de google.
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
}
Ici, nous encodons à la fois les données et BarcodeFormat car nous voulons être un fichier 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)
Quant au scanner, nous devons utiliser cette bibliothèque.
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)
}
}
}
Au fait, j'ai écrit ce code dans un projet il y a environ 4 ans. Veuillez vous attendre à des utilisations obsolètes de la classe/fonction, le cas échéant, et peut-être qu'il existe une nouvelle approche pour cela, l'une d'entre elles utilisant le kit ML de jetpack.
Voici le code complet du code expliqué ci-dessus.
—
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































