Implementasi Kode QR di Android
Belakangan ini penggunaan QR code semakin marak, mulai dari pembayaran, menu restoran hingga mekanisme check-in/check-out yang mulai digunakan di beberapa kantor atau pintu masuk tempat umum.
Pada dasarnya QR Code memfasilitasi proses pemberian data kepada konsumen dengan gambar unik yang merepresentasikan data itu sendiri, dimana data tersebut akan dikelola oleh konsumen untuk pada akhirnya dapat menentukan tindakan apa yang perlu diambil.
Pada dasarnya, QRCode hanyalah representasi data dalam bentuk gambar yang unik.
Dalam pengembangan Android, kita dapat menguasai dua fungsi untuk diimplementasikan secara independen di pihak kita.
Generator
Untuk generate QR Code, kita bisa menggunakan library dari google ini.
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
}
Di sini kami menyandikan data dan BarcodeFormat seperti yang kami inginkan menjadi file 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)
Adapun Pemindai, kita perlu menggunakan perpustakaan ini.
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)
}
}
}
Omong-omong, saya telah menulis kode itu ke dalam satu proyek sekitar 4 tahun yang lalu. Harap perkirakan beberapa penggunaan kelas/fungsi yang tidak digunakan lagi jika ada dan mungkin ada pendekatan baru untuk ini, salah satunya adalah menggunakan kit ML dari jetpack.
Berikut adalah kode lengkap dari kode yang dijelaskan di atas.
—

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































