BAB IV IMPLEMENTASI DAN PEMBAHASAN SISTEM 4.1

advertisement
BAB IV
IMPLEMENTASI DAN PEMBAHASAN SISTEM
4.1
Implementasi dan Uji Coba Sistem
Berdasarkan analisis dan perancangan sistem yang telah dibuat pada bab
sebelumnya, maka untuk bab ini akan dibahas mengenai implementasi dan
pembahasan secara menyeluruh dengan menyertakan tampilan aplikasi dan
potongan kode program.
4.1.1 Implementasi Aplikasi Android
Pada implemntasi aplikasi android, proses mengambil data maupun
pengiriman data dari web service dilakukan oleh kelas JSONParser.
public class JSONParser {
String charset = "UTF-8";
HttpURLConnection conn;
DataOutputStream wr;
StringBuilder result;
URL urlObj;
JSONObject jObj = null;
StringBuilder sbParams;
String paramsString;
public JSONObject makeHttpRequest(String url, String
method,HashMap<String, String> params) {
sbParams = new StringBuilder();
int i = 0;
for (String key : params.keySet()) {
try {
if (i != 0){
sbParams.append("&");
}
sbParams.append(key).append("=")
.append(URLEncoder.encode(params.get(key), charset));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
Gambar 4.1 Cuplikan Program JSONParser
24
25
Gambar 4.1 menunjukan potongan program untuk proses mengambil data dari
web service melalui URL, hasilnya berupa Object JSON. Kelas ini digunakan di
kelas-kelas lain untuk mengambil data. Untuk program php terdapat pada
lampiran halaman 41.
4.1.2 Implementasi Ambil Survei
Untuk mengimplementasikan lokasi yang akan di survei mengacu gambar
..dimana pengguna akan memilih menu ambil survei kemudian akan mengambil
gambar pertama dan kedua sekaligus latitude longetude.
Gambar 4.2 Tampilan Menu Ambil Survei
Gambar 4.2 pengguna akan melakukan pengambilan gambar dengan
memfoto kerusakan jalan, lokasi pertama dan lokasi kedua. Aplikasi akan
otomatis menangkap titik lokasi lat long yang nantinya akan dikirimkan ke web
service kemudian ditambilkan membentuk garis yang akan menunjukan kerusakan
jalan. Berikut adalah potongan program untuk proses pengambilan gambar pada
android.
26
public int hasilCapture(int requestCode, int
Intent data){
REQ_CODE = requestCode;
RES_CODE = resultCode;
DATA = data;
int hasil=0;
// if the result is capturing Image
if
(requestCode
CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
if (resultCode == act.RESULT_OK) {
hasil = 1;
resultCode,
==
Gambar 4.3 Cuplikan Program Proses Pengambilan Gambar
Cuplikan program gambar 4.3 menunjukan proses pemanggilan fitur
camera pada aplikasi ini yang kemudian akan digunakan untuk proses
pengambilan gambar. Android akan mengambil gambar kerusakan jalan dan
sekaligus
latitude
dan
longitude
lokasi
kerusakan
jalan,
kemudian
mengirimkannya ke web service. Setelah itu web service akan mengambil
parameter latitude dan longitude yang dikirimkan android, kemudian akan
disimpan dalam ArrayLis.
27
private void updateWithNewLocation(Location location) {
TextView
myLocationText
=
(TextView)
findViewById(R.id.tvLokasi);
String latLongString;
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
double iLat = lat * 1000000000;
double iLng = lng * 1000000000;
_Lat = (long) iLat;
_Lng = (long) iLng;
latLongString = "Posisi Anda : \n Lat:" + lat +
"\nLong:" + lng;
pDialog.dismiss();
} else {
_Lat = 0;
_Lng = 0;
pDialog.dismiss();
latLongString = "Lokasi Tidak Ditemukan";
showAlertGps("Aktifkan GPS");
}
Log.i("lokasi", "Latitude : "+_Lat+" Longitude :
"+_Lng);
myLocationText.setText(latLongString);
}
Gambar 4.4 Cuplikan Program Mengambil Latitude Longitude
Cuplikan program gambar 4.4 digunakan sebagai proses untuk menangkap
atau mengambil titik lokasi saat pengambilan foto yang nantinya akan di kirimkan
disimpan kemudian dengan web service akan ditampilkan kembali.
4.1.3 Implementasi Hasil Survei
Mengacu gambar 3.9 sesuai rancangan pengguna atau admin kantor akan
dapat memilih menu hasil survei dimana akan terdapat list lokasi-lokasi dari
survei yang dilakukan.
28
Gambar 4.5 Tampilan Menu List Lokasi Hasil Survei
Gambar 4.5 menunjukan list hasil survei yang merupakan nama-nama
lokasi survei, untuk melihat detai hasil survei ini pengguna dapat klik salah satu
list yang akan menuju pada maps sekaligus akan melihat lokasi kerusakan jalan
yang ditandai dengan warna-warna kerusakan jalan.
29
private
ArrayList<DataSurvei.Lokasi>getLokasiById(ArrayList<DataSurv
ei.Lokasi> datalokasi, String idsurvei){
DataSurvei oSurvei = new DataSurvei();
ArrayList<DataSurvei.Lokasi>
lokasi
=
new
ArrayList<>();
int n=datalokasi.size();
for(int i=0; i<n; i++){
Log.d("isi
lokasi-"+i,
"=
"+datalokasi.get(i).getIdsurvei());
DataSurvei.Lokasi
oLokasi
=
oSurvei.new
Lokasi();
if(datalokasi.get(i).getIdsurvei().equalsIgnoreCase(idsurvei
)){
oLokasi.setIdSurvei(datalokasi.get(i).getIdsurvei());
oLokasi.setNamalokasi(datalokasi.get(i).getNamalokasi());
oLokasi.setFoto(datalokasi.get(i).getFoto());
oLokasi.setLatitude(datalokasi.get(i).getLatitude());
oLokasi.setLongitude(datalokasi.get(i).getLongitude());
oLokasi.setKetlokasi(datalokasi.get(i).getKetlokasi());
lokasi.add(oLokasi);
}
}
Log.d("idsurvei lokasi ", ""+idsurvei);
Log.d("hasil filter lokasi ", ""+lokasi);
return lokasi;
}
}
Gambar 4.6 Cuplikan Program Menyimpan Hasil Survei Pada List
Potongan kode program gambar 4.6 adalah class TampilActivity extends
ListActivity digunakan untuk mengambil id masing masing variabel yang nantinya
akan ditampilkan dengan mengambil dari ArrayList kemudian menggunakan
parsing data dari JSON dan dengan kelas HashMap akan menampilkan dalam
tampilan map.
30
4.1.4 Implementasi Menciptakan Garis Warna
Untuk mengimplementasikan detail lokasi mengacu pada rancangan
gambar 3.9 pengguna dapat melihat lokasi kerusakan jalan, kondisi jalan dan
panjang kerusakan jalan.
Gambar 4.7 Tampilan Lokasi Kerusakan Jalan
Gambar 4.7 menunjukan tampilan yang akan terlihat oleh user lokasi
kerusakan jalan beserta keterangannya. Warna yang tampil akan berbeda sesuai
panjang kerusakan. Pada penelitian ini untuk menentukan warna berdasarkan
jarak mengacu Tabel 2.3 Kriteria kerusakan jalan memanjang.
Log.d("jarak ", ""+jaraknya);
String[] jaraks = jaraknya.split(" ");
double jarak = Double.parseDouble(jaraks[0]);
Log.d("ambil jarak km ", ""+jarak);
if(jarak <= 1.0){
lineOptions.color(Color.YELLOW);
}else if(jarak >= 1.0 && jarak <=2.0){
lineOptions.color(Color.GREEN);
}else {
lineOptions.color(Color.RED);}
Gambar 4.8 Cuplikan Program Untuk Menciptakan Warna Garis
31
Potongan program gambar 4.8 digunkana untuk menciptkan garis yang
berwarna beda berdasarkan panjang kerusakan jalan, garis yang tampil berwarna
kuning berarti kerusakan ringan berdasarkan panjang kerusakan kurang dari 1 km,
untuk warna hijau kerusakan sedang berdasarkan panjang kerusakan lebih dari 1
km – kurang dari 2 km, kemudian untuk warna merah kerusakn berat berdasarkan
panjang kerusakan lebih dari 3 km.
private List<LatLng> decodePoly(String encoded) {
List<LatLng> poly = new ArrayList<>();
int index = 0, len = encoded.length();
int lat = 0, lng = 0;
while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) :
(result >> 1));
lat += dlat;
shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) :
(result >> 1));
lng += dlng;
LatLng p = new LatLng((((double) lat / 1E5)),
(((double) lng / 1E5)));
poly.add(p);
}
return poly;
}
}
Gmabar 4.9 Cuplikan Program Membuat Garis PolyLine
32
Cuplikan program gambar 4.9 digunakan untuk menciptakan atau
mengkonversi polyline yang dikodekan dan poligon sebelum ditampilkan menjadi
garis yang berwarna dalam google maps , lintang dan bujur yang menentukan
polyline atau polygon disimpan sebagai string kemudian akan di transfer oleh json
yang kemudian google maaps akan meresponnya kemudian ditampilkan dalam
tampilan garis.
4.2
Pembahasan Sistem
Pada tahap ini akan dijabarkan pembahasan sistem yang telah
diimplementasikan sesuai kebutuhan sistem.
4.2.1 Proses Pertukaran Data Dengan JSON
Dalam penelitian ini untuk proses mengambil data menggunakan
JSONParser dari web service melalui URL, hasilnya berupa Object JSON. Kelas
ini digunakan di kelas-kelas lain untuk mengambil data. Data dari android berupa
longitude latitude dan foto akan digenerik menjadi kode-kode bineri yang
nantinya akan terbaca oleh web service kemudian ditampilkan kembali pada
aplikasi android.
4.2.2 Proses Ambil Gambar
Pada proses ambil gambar seperti gambar 4.1 user akan melakukan survei
dengan memilih menu buat survei kemudian aplikasi akan siap untuk mengambil
gambar. Pada tahap ini pada saat user memilih menu buat survei aplikasi akan
langsung memunculkan fitur camera, pada fitur ini tipe camera maupun ukuran
file gambar tidak berpengaruh pada aplikasi ini, hanya saja jika untuk gambar
dengan ukuran resolusi besar kemungkian dalam proses ulpoad akan lebih lama
33
proses ini juga akan bergantung pada kecepatan koneksi internet pada
smartphone.
Merujuk gambar 4.1 terlihat pengambilan gambar akan dilakukan dua kali,
pengambilan pada titik pertama dan titik kedua. Pada saat pengambilan gambar
titik pertama latitude longitude akan otomatis tertangkap dan terlihat begitu pula
untuk pengambilan gambar yang kedua. Setelah kedua titik lokasi dari lokasi awal
dan lokasi akhir didapatkan kemudian user melakukan upload to server yang
nantinya data lat long dan foto akan tersimpan pada databse. Latitude longitude
itu sendiri akan digunakan untuk menciptakan garis memanjang dari dua titik
lotitude longitude itu nantinya akan menciptakan tarikan garis polyline yang
nantinya juga akan mempunyai warna berbeda sesuai dengan panjangnya.
4.2.3 Proses Simpan Data
Data berupa gambar dan latitude longitude yang sudah diambil akan
disimpan terlebih dahulu ke dalam database sebelum ditampilkan pada menu
Hasil Survei.
34
Gambar 4.10 Tampilan Tabel Data Gambar dan Lokasi Pada Databse
Gambar 4.10 menunjukan tabel database yang menyimpan data dari hasil
survei data tersebut diantaranya seperti latitude longitude, foto kondisi jalan,
keterangan kerusakan jalan, tanggal dan jam pengambilan survei. Semua data
yang telah disimpan akan ditampilkan bersamaan dengan lokasi kerusakan jalan,
seperti foto kondisi jalan akan tampil pada marker pada lokasi dan keterangan
kerusakan jalan akan tampil pada list. Pada tahap penyimpanan data JSON dan
web service sangat berbperan penting, karena untuk mengirimkan data diperlukan
parsing data dari json yang akan diterma web service.
4.2.4 Proses Menampilkan Hasil Survei
Pada proses ini akan ditampilkan hasil survei yang berupa warna garis
sesuai panjang kerusakan jalan, garis yang tampil akan berwarna berbeda sesuai
panjang kerusakan. Proses menciptakan garis dengan warna yang berbeda
berdasarkan panjang kerusakan jalan merupakan proses utama pada aplikasi ini.
Gambar 4.7 menunjukan bahwa akan muncul tiga warna yang berbeda,
warna tersebut akan terbuat sesuai panjang kerusakan jika panjang kurang dari
35
satu kilometer maka akan tampil warna kuning, jika kerusakan jalan panjang lebih
dari satu kilometer dan kurang dari dua kilometer maka akan tampil warna hijau
dan jika panjang kerusakan lebih dari tiga kilometer maka akan tampil warna
merah.
Perbedaan warna yang tampil pada lokasi kerusakan jalan akan
menunjukan kategori kerusakan ringan, sedang dan berat, untuk warna kuning
akan digabarkan dengan warna kuning untuk warna hijau menunjukan kerusakan
sedang dan untuk warna merah untuk kerusakan berat.
4.2.5 Proses Menampilkan Jarak dari Google Map
Pada aplikasi ini seperti pada tampilan hasil akhir akan menampilkan garis
warna marker beserta jarak pengukuran, dalam menampilkan jarak dalam satuan
kilometer disini menggunakan webservice google map dan memanfaatkan parsing
data menggunakan json. Untuk mendapatkan hasilnya maka perlu juga
menggunakan poin sistem World Geodetic System (WGS84) titik pada dunia.
private String getDirectionsUrl(LatLng origin,LatLng dest){
String str_origin =
"origin="+origin.latitude+","+origin.longitude;
String str_dest =
"destination="+dest.latitude+","+dest.longitude;
String sensor = "sensor=false";
String parameters =
str_origin+"&"+str_dest+"&"+sensor;
String output = "json";
String url =
"https://maps.googleapis.com/maps/api/directions/"+output+"?
"+parameters;
return url;
}
Gambar 4.11 Cuplikan Program menampilkan Jarak
36
Pada method gambar 4.11 cuplikan program menampilkan jarak memiliki
parameter origin dan destination, origin maksudnya adalah titik latitude dan
longitude lokasi asal atau lokasi awal, sedangkan destination adalah titik latitude
dan longitude lokasi tujuan lokasi kedua. Dalam method ini terdapat url API
google maps yang berfungsi sebagai web service yang menyediakan sumber data
terhadap lokasi tersebut. Kemudian method getDirectionsUrl() tersebut dipanggil
dengan cara seperti berikut :
LatLng origin = markerPoints.get(0); //diperoleh dari hasil
survei
LatLng dest = markerPoints.get(1); // diperoleh dari hasil
survei
// Getting URL to the Google Directions API
String url = getDirectionsUrl(origin, dest);
//Log.d("getDirectionUrl = ", ""+url);
DownloadTask downloadTask = new DownloadTask();
// Start downloading json data from Google Directions API
downloadTask.execute(url);
Gambar 4.12 Cuplikan Program Method getDirectionsUrl()
Kemudian hasil dari method getDirectionsUrl tersebut digunakan untuk
mengambil data dari google API menggunakan method download.execute(url);
hasil dari proses ini nantinya akan menghasilkan data berupa jarak dari google
map yang kemudian digunakan untuk menentukan warna garis pada peta
menggunakan method pada gambar 4.8, yang dimana akan dipanggil
menggunakan protected void onPostExecute() yang didalamnya terdapat method
seperti berikut:
37
if(j==0){ // Ambil jarak dari API google
distance = point.get("distance");
continue;
}else if(j==1){ // Ambil Estimasi dari API google
duration = point.get("duration");
continue;}
Gambar 4.13 Cuplikan program onPostExecute()
4.3
Hasil Pengujian Aplikasi / Kuesioner Aplikasi
Pada penelitian ini pengujian aplikasi akan dilakukan kepada beberapa
orang untuk menjadi semple hasil aplikasi dengan penilaian huruf sangat baik,
baik, cukup dan kurang. Pengujian ini melibatkan tiga penguji yang melakukan
survei kemudian memberikan penilaian pada fitur-fitur aplikasi dari pengujian
terbut didapat kesimpulan dari tiga pengguna pada fitur ambil foto dua pengguna
menilai sangat baik SB dan satu pengguna baik B, untuk fitur koordinat semua
pengguna menilai baikB, fitur upload server dua pngguna menilai baik B dan satu
pengguna cukup C, fitur hasil survei dua pengguna menilai SB, dan satu pengguna
B dan untuk penggunaan aplikasi semua pengguna menilai B. Untuk melihat hasil
kuesioner aplikasi terdapat pada halaman lampiran Tabel lampiran 1.1.
Download