Halo sahabat CAN Creative, kali ini kami kembali dengan tutorial yang keren yaitu membuat QR Code generator dengan menggunakan library zxing yang di kembangkan secara terbuka tentunya. Bisa dilihat di github mereka https://github.com/zxing/zxing. Sebelumnya kami akan mengenalkan apa itu QR Code. Mengutip dari wikipedia. QR Code atau dalam bahasa Kode QR adalah bentuk evolusi kode batang dari satu dimensi menjadi dua dimensi.

Penggunaan kode QR sudah sangat lazim di Jepang. Hal ini dikarenakan kemampuannya menyimpan data yang lebih besar daripada kode batang. Sehingga mampu mengkodekan informasi dalam bahasa Jepang sebab dapat menampung huruf kanji. Kode QR telah mendapatkan standardisasi internasional dan standarisasi dari Jepang berupa ISO/IEC18004 dan JIS-X-0510 dasasan. Tentunya telah digunakan secara luas melalui ponsel di Jepang. Secara fungsi sendiri QR Code biasa digunakan untuk menyimpan data yang terenkripsi ataupun data yang bersifat publik seperti alamat website, nomor telepon dan data2 lainnya. Tanpa menunggu lama, langsung saja kita mulai tutorialnya.

Langkah Pertama Android Tutorial

Pertama kita masukan dulu library zxingnya, dan pastikan kalian sudah menggunakan versi terbaru dari library ini. Untuk update versinya bisa dilihat di https://mvnrepository.com/artifact/com.google.zxing/core

implementation 'com.google.zxing:core:3.3.0'

Setelah itu kita buat sebuah class dengan nama QRUtility dan tambahkan kode seperti di bawah ini.

import android.graphics.Bitmap
import android.graphics.Color
import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
import com.google.zxing.MultiFormatWriter
import com.google.zxing.WriterException
import com.google.zxing.common.BitMatrix
import com.google.zxing.common.CharacterSetECI
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel
import java.util.*

object QrUtility {

   @Throws(WriterException::class)
   fun generateQR(value: String) : Bitmap? {
       val bitMatrix: BitMatrix
       try {
           val hints = EnumMap<EncodeHintType, Any>(EncodeHintType::class.java)
           hints[EncodeHintType.ERROR_CORRECTION] = ErrorCorrectionLevel.H
           hints[EncodeHintType.CHARACTER_SET] = CharacterSetECI.UTF8

           bitMatrix = MultiFormatWriter().encode(
               value,
               BarcodeFormat.QR_CODE,
               500,
               500,
               hints
           )
       }catch (Illegalargumentexception : 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))
                   Color.BLACK
               else
                   Color.WHITE
           }
       }
       val bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight, Bitmap.Config.ARGB_4444)
       bitmap.setPixels(pixels, 0, 500, 0, 0, bitMatrixWidth, bitMatrixHeight)

       return bitmap
   }

}

Class QRUtility ini berfungsi untuk menggenerate dari String di encode menjadi sebuah Bitmap sehingga bisa di tampilkan kedalam ImageView. Untuk fungsi tersebut bisa dilihat dimetode generateQR didalam kelas tersebut.

Selanjutnya kita buat layout untuk menampilkan gambar QR codenya. Kita buka main_activity.xml dan bisa tambahkan kode seperti dibawah ini.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
  
  
   <ImageView
       android:id="@+id/main_iv_qr"
       android:layout_width="200dp"
       android:layout_height="200dp"
       android:layout_centerInParent="true"/>
  
   <TextView
       android:layout_marginTop="20dp"
       android:textColor="#000000"
       android:gravity="center"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_below="@+id/main_iv_qr"
       android:text="Menampilan QR Code"/>

</RelativeLayout>

Setelah itu kita buka MainActivity.class dan kita buat kode untuk menggenerate teks menjadi QRnya. Bisa lihat kode dibawah ini.

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ImageView
import android.widget.Toast

class MainActivity : AppCompatActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInstanceState)
       setContentView(R.layout.activity_main)

       val imageQR = findViewById<ImageView>(R.id.main_iv_qr)

       val mQRBitmap = QrUtility.generateQR("ini isi Kode QR nya.")
       if (mQRBitmap != null) {
           imageQR.setImageBitmap(mQRBitmap)
       } else {
           Toast.makeText(this, "Gagal membuat QR Code", Toast.LENGTH_SHORT).show()
       }
   }
}

Untuk isi dari Kode QRnya sendiri bisa anda modifikasi sesui dengan keperluan anda, seperti memuat json yang di enkripsi atau hanya tautan anda sendiri. Setelah itu jalankan dan untuk kode di atas akan jadi seperti ini.

android_tutorial_CAN_Creative
Tutorial Android CAN Creative

Selamat mencoba, semoga sefruit tutorial ini berguna untuk sahabat CAN Creative yang berminat menekuni bidang IT khususnya menjadi developer. Anda juga dapat mengetahui promo menarik seputar penawaran website, aplikasi, digital marketing ataupun SEO melalui website kami can.co.id. Kami juga aktif di media sosial instagram @cancreative, Line @cancreative. source code lengkap di unggah di Github : https://github.com/ramcona/qrcodegenerator.