Anda di halaman 1dari 9

QR Code Scanner Project

1. Pengertian QR Code ?
2. Mengenerate QR Code
3. Membuat Project QR Code Scanner
3.1 Membuat Project baru
3.2 Menambahkan Library Zxing
3.3 Membuat Antar muka pengguna (UI)
3.4 Perancangan pemrograman project QR Code Scanner
3.4.1 Devinisi View Objects
3.4.2 Memasukkan OnClickListener
3.4.3Memasukkan Scanning pada Link WEB dan GEO
3.4.4 Project Lengkap QR Code Scanner

Pengertian QR Code ?
Mungkin sering kita melihat QR Code. Whatsapp saat ini menggunakan QR Code untuk login.
QR Code diartika Quick Respon Code. QR Code sebenarnya menggunakan 2 dimensi bar code.
Sebuah QR Code terdiri dari kotak hitam persegi empat dengan latar belakang putih, dan dapat
digunakan untuk mengkodekan data yang dapat dibaca menggunakan kamera atau perangkat
pengambil gambar lainnya.
Dibawah ini contoh dari QR code :

Mengenerate QR Code
Untuk menscan QR Code yang diperlukan adalah Code dari QR Code tersebut.
Pada project saat ini QR Code yang kita generate terdiri dari Nama, Kelas dan NIM di bawah ini
contoh dari QR Code yang sudah digenerate :
Membuat sendiri QR Code dapat melalui link : http://www.goqr.me . Saya membuat JSON
string sebagai QR Data seperti contoh dibawah ini :

Membuat Project QR Code Scanner


Project QR Code dapat digunakan juga untuk menscan Barcode

Membuat Project baru


* Buat project baru di Android Studio
* Nama Project DonnyQRCodeScanner ( formatnya : nama_anda_QRCodeScanner )
* Masukkan Nama Domain Anda contoh ( smartneasy.com )
* Simpan project dalam directory : ….\AndroidStudioProjects\…...
( C:\Users\nama_anda\AndroidStudioProjects\DonnyQRCodeScanner)
Menambahkan Library Zxing
* Untuk membaca QR Code saya menggunakn Library Zxing
( https://github.com/journeyapps/zxing-android-embedded )
* Buka Project Anda kemudian double klik pada file build.gradle ( module:app ) kemudian
tambahkan dibagian bawah dependency

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
implementation 'com.android.support:appcompat-v7:25.3.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.1'

implementation 'com.android.support:support-v4:28.0.0'

testCompile 'junit:junit:4.12'

//Tambahkan ini library Zxing pada dependency


implementation 'com.journeyapps:zxing-android-embedded:3.4.0'
}

* Setelah ditambahkan Library Zxing kemudian Klik Sync Now untuk mengupdate gradle
project
pada bagian ini Anda perlu adanya koneksi ke INTERNET :P.

Membuat Layout Antar muka pengguna (UI)


* Pada bagian ini saya membuat tiga content (Nama, Kelas dan NIM) pada QR Code yang
digenerate. Jadi pada tampilannya (layout ) menjadi Nama, Kelas dan NIM. Dan ada juga
button pada layout yang akan membuka kamera untuk scanning QR Code.

* Untuk mendesign layout gambar di atas saya gunakan code XML dibawah ini :

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:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.smartneasy.donnyqrcodescanner.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" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Nama" />
<TextView
android:id="@+id/textViewNama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="xyz"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Kelas" />
<TextView
android:id="@+id/textViewKelas"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="xyz"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="NIM" />
<TextView
android:id="@+id/textViewNim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="xyz"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>
</RelativeLayout>

Pada values → dimens.xml

dimens.xml

<?xml version="1.0" encoding="utf-8"?>


<resources>
<dimen name="activity_vertical_margin">5dp</dimen>
<dimen name="activity_horizontal_margin">30dp</dimen>
</resources>
Perancangan pemrograman project QR Code Scanner
Devinisi View Objects

* Sekarang kita buka MainActivity.java, kemudian kita definisikan dahulu view objects

MainActivity.java

public class MainActivity extends AppCompatActivity {

//View Objects
private Button buttonScan;
private TextView textViewNama, textViewKelas, textViewNim;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//View objects
buttonScan = (Button) findViewById(R.id.buttonScan);
textViewNama = (TextView) findViewById(R.id.textViewNama);
textViewKelas = (TextView) findViewById(R.id.textViewKelas);
textViewNim = (TextView) findViewById(R.id.textViewNim);
}
}

* Sekarang kita coba untuk memasukkan OnClickListener ke button.

Memasukkan OnClickListener

* Sekarang kita coba implementasikan OnClickListener pada button yg telah kita buat

MainActivity.java

//mengimplementasikan onclicklistener
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

//View Objects
private Button buttonScan;
private TextView textViewNama, textViewKelas, textViewNim;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//View Objects
buttonScan = (Button) findViewById(R.id.buttonScan);
textViewNama = (TextView) findViewById(R.id.textViewNama);
textViewKelas = (TextView) findViewById(R.id.textViewKelas);
textViewNim = (TextView) findViewById(R.id.textViewNim);

//mengimplentasikan OnClickListener
buttonScan.setOnClickListener(this);
}

@Override
public void onClick(View view) {

}
}

Memasukkan Scanning pada Link WEB dan GEO


if (Patterns.WEB_URL.matcher(result.getContents()).matches()){
Intent visitUrl = new Intent(Intent.ACTION_VIEW, Uri.parse(result.getContents()));
startActivity(visitUrl);
}else {
try {
Uri geoIntentUri = Uri.parse(result.getContents()+"?z=11");
Intent visitGeo = new Intent(Intent.ACTION_VIEW, geoIntentUri);
visitGeo.setPackage("com.google.android.apps.maps");
startActivity(visitGeo);
}catch (ActivityNotFoundException e){
Log.d("lokasi tidak ditemukan", result.getContents());
}
}

Project lengkap QR Code Scanner

* Sekarang waktunya kita coba Scan QR Code.


* Untuk Scanning modifikasi code dari MainActivity.java dibawah ini :

package com.smartneasy.donnyqrcodescanner;

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.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;

//implementasi dari onclicklistener


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

//View Objects
private Button buttonScan;
private TextView textViewNama, textViewKelas, textViewNim;

//qr code scanner object


private IntentIntegrator qrScan;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//View objects
buttonScan = (Button) findViewById(R.id.buttonScan);
textViewNama = (TextView) findViewById(R.id.textViewNama);
textViewKelas = (TextView) findViewById(R.id.textViewKelas);
textViewNim = (TextView) findViewById(R.id.textViewNim);

//intialisasi scan object


qrScan = new IntentIntegrator(this);

//implementasi onclick listener


buttonScan.setOnClickListener(this);
}

//untuk mendapatkan hasil scanning


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode,
resultCode, data);
if (result != null) {
//jika qrcode tidak ada sama sekali
if (result.getContents() == null) {
Toast.makeText(this, "Hasil SCAN tidak ada", Toast.LENGTH_LONG).show();
} else {
//jika qr ada/ditemukan data nya
try {
//konversi datanya ke json
JSONObject obj = new JSONObject(result.getContents());
//di set nilai datanya ke textviews
textViewNama.setText(obj.getString("nama"));
textViewKelas.setText(obj.getString("kelas"));
textViewNim.setText(obj.getString("nim"));
} catch (JSONException e) {
e.printStackTrace();
//jika kontolling ada di sini
//itu berarti format encoded tidak cocok
//dalam hal ini kita dapat menampilkan data apapun yg tesedia pada qrcode
//untuk di toast
Toast.makeText(this, result.getContents(), Toast.LENGTH_LONG).show();
}
}

if(Patterns.WEB_URL.matcher(result.getContents()).matches()){
Intent visitUrl = new Intent(Intent.ACTION_VIEW,Uri.parse(result.getContents()));
startActivity(visitUrl);
}else {
try {
Uri geoIntent = Uri.parse(result.getContents()+"?z=11");
Intent visitGeo = new Intent(Intent.ACTION_VIEW,geoIntent);
visitGeo.setPackage("com.google.android.apps.maps");
startActivity(visitGeo);
}catch (ActivityNotFoundException e) {
Log.d("Lokasi tidak ditemukan", result.getContents());
}
}

} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
@Override
public void onClick(View view) {
//inisialisasi scanning qr code
qrScan.initiateScan();
}
}

* Kita dapat mem Build APK atau dicoba untuk di RUN project tersebut

Anda mungkin juga menyukai