Kode Quick Response (QR) merupakan bentuk evaluasi dari barcode yang biasanya kita lihat pada sebuah produk. Kode QR adalah barcode dua dimensi (kode matriks) yang memungkinkan konten diterjemahkan dengan kecepatan tinggi.
Tutorial kali ini saya akan menjelaskan bagaimana menerapkan ZXING library untuk memindai atau decode barcode (memecahkan kode-kode pada barcode). Tutorial ini membuat scanner dengan menggunakan kamera and decode barcode.
1. Buat Project Baru
Untuk implementasi QR Code Scanner, kita buat sebuah project Android baru, buka File -> New -> New Project:
Jangan lupa untuk menambahkan permission untuk menggunakan Camera di AndriodManifest.xml dengan menambahkan baris berikut di atas tag
<applications></aplication>
:<uses-permission android:name="android.permission.CAMERA"/>
2. Tambahkan ZXING library
Tambahkan ZXING library di proyek anda untuk mengimplementasikan pemindai, dengan cara buka file build.gradle (Modul: app) dan tambahkan kode berikut pada bagian dependencies:
compile 'me.dm7.barcodescanner:zxing:1.9'
3. Inisialisasi Scanner View
Untuk memecahkan kode-kode barcode, kita perlu menerapkan pemindai. Kita inisialisasikan ZXingScannerView pada MainActivity.java.
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);
4. Terapkan ResultHandler
Untuk mendapatkan hasil pindaian QR Code, kita akan menerapkan class ZXingScannerView.ResultHandler. Class ini akan menangani hasilnya dengan menggunakan metode handleResult(). Jadi, kita perlu menambahkan metode ini pada file MainActivity.java. Method handleResult() mendapatkan hasilnya dan menampilkannya pada alert dialog.
@Override
public void handleResult(Result rawResult) {
Log.v("TAG", rawResult.getText()); // Prints scan results
Log.v("TAG", rawResult.getBarcodeFormat().toString());
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Scan Result");
builder.setMessage(rawResult.getText());
AlertDialog alert1 = builder.create();
alert1.show();
mScannerView.resumeCameraPreview(this);
}
5. Tambahkan Handler untuk hasil scan
Kita tambahkan handler untuk memindai dan memulai kamera pada saat activity onResume() dan berhenti pada saat activity onPause().
@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
Berikut tampilan source code lengkap pada MainActivity.java:
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.google.zxing.Result;
import me.dm7.barcodescanner.zxing.ZXingScannerView;
public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView mScannerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);
}
@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
@Override
public void handleResult(Result rawResult) {
Log.v("TAG", rawResult.getText()); // Prints scan results
Log.v("TAG", rawResult.getBarcodeFormat().toString());
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Scan Result");
builder.setMessage(rawResult.getText());
AlertDialog alert1 = builder.create();
alert1.show();
mScannerView.resumeCameraPreview(this);
}
}
6. Run project anda
Saat proyek anda selesai di run, maka hasil outputnya kurang lebih akan seperti ini :