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.
Untuk implementasi QR Code Scanner, kita buat sebuah project Android baru, buka File -> New
-> New Project:
<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 'com.journeyapps:zxing-android-embedded:3.4.0'
Untuk memecahkan kode-kode barcode, kita perlu menerapkan pemindai. Kita inisialisasikan
ZXingScannerView pada MainActivity.java.
4. Terapkan ResultHandler
Kita tambahkan handler untuk memindai dan memulai kamera pada saat activity onResume()
dan berhenti pada saat activity onPause().
package daniyusuf.com.qrcodescanner;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import org.json.JSONException;
import org.json.JSONObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonScan.setOnClickListener(this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode,
resultCode, data);
if (result != null) {
if (result.getContents() == null) {
Toast.makeText(this, "Result Not Found", Toast.LENGTH_LONG).show();
} else {
try {
JSONObject obj = new JSONObject(result.getContents());
textViewAddress.setText(obj.getString("address"));
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(this, result.getContents(),
Toast.LENGTH_LONG).show();
editTextAddress.setText(result.getContents());
}
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
@Override
public void onClick(View view) {
qrScan.initiateScan();
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/hero9"
android:padding="10dp"
tools:context=".MainActivity">
<Button
android:id="@+id/buttonScan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Scan QR Code" />
<EditText
android:id="@+id/editTextAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/buttonScan"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:ems="10"
android:inputType="textPersonName"
android:text="Url"
android:textColor="@color/zxing_possible_result_points" />
</RelativeLayout>
Saat proyek anda selesai di run, maka hasil outputnya kurang lebih akan seperti ini :