Disusun Oleh :
Faisal Kurniawan 1500018247
YOGYAKARTA
2017
DAFTAR ISI
1
BAB I
BAB II
BAB III
BAB IV
A. Kesimpulan .................................................................................................................... 14
BAB I
PENDAHULUAN
2
A. LATAR BELAKANG PERLUNYA APLIKASI
Dengan meningkatnya pengguna kendaraan baik roda dua dan roda empat terutama
kendaraan pribadi,masih banyak yang menggunakan manual yaitu pada saat kendaraan
masuk area parkir akan memberikan lembaran karcis yang di berikan.dan untuk mencari
rute parkir yang tersedia user harus mencari secara manual,sehingga menyita waktu yang
cukup banyak.
Pada Tugas Akhir ini akan dirancang sebuah sistem pada android yang dapat
mendeteksi serta menginformasikan tempat parkir kosong. sehingga user tidak perlu repot
dalam mencari lahan parkir yang masih kosong,. Sistem ini menggunakan sensor dengan
kendali komputer, dan display agar sistem dapat berjalan dengan lancar serta
mempermudah pengelolah parkir untuk mengatur kendaraan yang akan menggunakan
lokasi parkir.
B. TUJUAN APLIKASI
1. Mengetahui suatu lokasi parkir apakah masih kosong atau sudah terisi.
2. Untuk mempermudah identifikasi kendaraan yang masuk dan keluar dari area parkir.
3. Mempermudah pengguna untuk mencari jika ada lahan parkir yang kosong melalui
smartphone android mereka.
3
BAB II
PERANCANGAN APLIKASI
A. KEBUTUHAN DATA
Data Pengguna/User :
1. Nama Pengguna
2. Nomor Identitas Diri
3. Jenis Kendaraan yang Digunakan
4. Plat Nomor Kendaraan
4
BAB III
HASIL IMPLEMENTASI
A. TAMPILAN APLIKASI
5
2. Layout Memilih Area
3. Layout No kendaraan
6
B. SOURCE CODE & PENJELASAN
1. MainActivity.java
package com.example.smartparking;
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.ImageView;
import android.widget.TextView;
import org.w3c.dom.Text;
Button btnbook;
Button btnlokasi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnbook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent form_book_parkir = new Intent(MainActivity.this,
PilihKendaraan.class);
startActivity(form_book_parkir);
}
});
btnlokasi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent lokasi_parkir = new Intent(MainActivity.this,
LokasiParkir.class);
7
startActivity(lokasi_parkir);
}
});
}
Penjelasan :
- btnbook dan btnlokasi menyimpan event didalam id “btnbook” dan “btnlokasi” yang
menggunakan widget button
- didalam btnbook.setOnClickListener() berfungsi untuk memberikan aksi berpindah ke
activity lain ketika button ditekan oleh pengguna.
- didalam btnlokasi.setOnClickListener() berpindah ke activity lain
- “form_book_parkir” Intent untuk berpindah ke class “PilihKendaraan”
- “lokasi_parkir” Intent untuk berpindah ke class “LokasiParkir”
- startActivity() untuk menjalankan perintah Intent
2. LokasiParkir.java
package com.example.smartparking;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
/**
* Created by wumBowo on 12/12/2017.
*/
Penjelasan :
- Class ini dipanggil ketika button id=”btnlokasi” ditekan dan merupakan target dari
Intent “lokasi_parkir”. Class ini akan menampilkan layout “lokasi_parkir.xml”
3. PilihKendaraan.java
package com.example.smartparking;
import ……
/**
* Created by wumBowo on 18/12/2017.
*/
8
buttonmobil = (ImageButton) findViewById(R.id.buttonmobil);
buttonmotor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int jenis =0;
Intent motor = new Intent(PilihKendaraan.this, Book.class);
motor.putExtra("jenis",jenis);
startActivity(motor);
}
});
buttonmobil.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int jenis =1;
Intent mobil = new Intent(PilihKendaraan.this, Book.class);
mobil.putExtra("jenis",jenis);
startActivity(mobil);
}
});
}
}
Penjelasan :
- Class ini dipanggil ketika button id=”btnbook” ditekan dan merupakan target dari
Intent “form_book_parkir”. Class ini akan menampilkan layout
“pilih_kendaraan.xml”
4. Book.java
package com.example.smartparking;
import android.graphics.Bitmap;
import android.media.Image;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
//-----import library zxing untuk mengenerate QR CODE-----
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.journeyapps.barcodescanner.BarcodeEncoder;
import java.text.BreakIterator;
import java.util.ArrayList;
import java.util.List;
/**
* Created by wumBowo on 12/12/2017.
*/
9
TextView jenisken;
EditText atasnama;
EditText slot;
EditText jam;
TextView harga;
TextView tampilnopol;
TextView tampiljenisken;
TextView tampilatasnama;
TextView tampilslot;
TextView tampiljam;
TextView tampiltotalharga;
TextView tampilnobook;
ImageView qrcode;
Button btn;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.book_parkir);
//mengambil keseluruhan data yang dikirim melalui Intent
Bundle bundle = getIntent().getExtras();
//menyimpan data jenis yang dikirim sebelumnya dalam variable jenis
int jenis = bundle.getInt("jenis");
int nobook=1;
int i;
//perulangan nomor booking ketika booking telah dilakukan
for(i=0;i<-1;i++){
nobook=nobook+1;
}
}
public void hasil(View view){
setContentView(R.layout.book_sukses);
//mengambil keseluruhan data yang dikirim melalui Intent
Bundle bundle = getIntent().getExtras();
int jenis = bundle.getInt("jenis");
int nobook=1;
int i;
for(i=0;i<-1;i++){
nobook = nobook +1;
}
10
//set variable untuk masing-masing widget textview yang terdapat
dalam layout book_sukses.xml
tampilnopol = (TextView) findViewById(R.id.tampilnopol);
tampiljenisken = (TextView) findViewById(R.id.tampiljenisken);
tampilslot = (TextView) findViewById(R.id.tampilslot);
tampilatasnama = (TextView) findViewById(R.id.tampilatasnama);
tampiljam =(TextView) findViewById(R.id.tampiljam);
tampiltotalharga = (TextView) findViewById(R.id.tampiltotalharga);
tampilnobook = (TextView) findViewById(R.id.tampilnobook);
qrcode = (ImageView) findViewById(R.id.imageqrnobook);
//jika jenis=0 (kendaraan motor )
if(jenis== 0) {
int setharga = 1000; //biaya untuk motor = 1000
int totalharga=
Integer.parseInt(jam.getText().toString().trim()) * setharga;
tampiltotalharga.setText(String.valueOf(totalharga));
}
//jika jenis=1 (kendaraan mobil )
else if(jenis == 1){
int setharga = 2000; //biaya untuk mobil = 2000
int totalharga=
Integer.parseInt(jam.getText().toString().trim()) * setharga;
tampiltotalharga.setText("Rp "+String.valueOf(totalharga));
}
//menampilkan masing-masing entri form yang di-isi sebelumnya
tampilnopol.setText(""+nopol.getText());
tampiljenisken.setText(""+jenisken.getText());
tampilslot.setText(""+slot.getText());
tampilatasnama.setText(""+atasnama.getText());
tampiljam.setText(""+jam.getText() + " jam");
tampilnobook.setText("#"+nobook);
//-------MENAMPILKAN QR CODE-------
//mengubah tipedata variable "nobook" yang semula integer menjadi string
String textqrcode = (""+nobook);
//memanggil class multiformatwriter untuk menulis berbagai format
sekaligus
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try {
//SPesifikasikan isi dari qr code,tinggi, dan lebar
BitMatrix bitMatrix = multiFormatWriter.encode(textqrcode,
BarcodeFormat.QR_CODE,800,800);
Penjelasan :
- Class ini untuk mengisi form booking lahan parkir dan menampilkan hasil form
tersebut di dalam layout “book_sukses.xml”
- Bundle bundle = getIntent().getExtras(); yaitu untuk mengambil seluruh data-data yang
dikirim melalui Intent dari Activity Sebelumnya (Pilih Kendaraan.java)
11
- int jenis = bundle.getInt("jenis"); yaitu untuk menampung data yang terdapat dalam
bundle dan disimpan didalam variable jenis
- Menggunakan library ZXing untuk menghasilkan qr-code
- Penjelasan selanjutnya terdapat di dalam source-code didalamnya.
Penjelasan :
- Menyimpan hasil entri dalam form booking ke dalam tabel “book” dengan nama
database “parkir”.
- Ketika onCreate() akan membentuk tabel “book” dengan query yang telah ditulis
- Di dalam tabel “book” memiliki atribut dengan keterangan sebagai berikut :
o Nobook : Integer
o Platno : Text/String
o Nama : Text/String
o Slot : Text/String
o Jam : Integer
o Jenisken : Text
BAB IV
PENUTUP
A. KESIMPULAN
Aplikasi ini berguna untuk memundahkan para pengendara untuk memlih lokasi parkir
tanpa khawatir jika parkir telah penuh karena didalam aplikasi menyediakan fasilitas untuk
melihat lokasi keadaan parkir diwaktu yang sama. Mereka juga memiliki akses untuk
melakukan booking suatu blok lahan parkir untuk terhindar dari lahan parkir yang penuh
ketika pengendara masuk ke lahan parkir.
Di dalam aplikasi terdapat berbagai tampilan yang memiliki fungsional untuk memilih
jenis kendaraan yang dipakai, menentukan penggunaan jam parkir dengan spesifik, dan
juga QR Code yang nantinya dipakai untuk memverifikasi bahwa pengguna yang
membawa kendaraan tersebut valid sesuai dengan yang terdapat didalam sistem.
12
13