LAMPIRAN 1 KUESIONER USER REQUIREMENT
Kuesioner Perancangan Aplikasi Pemantau Posisi Perangkat Mobile Dengan Teknologi LBS •
Kuesioner ini bertujuan untuk mendapatkan opini user dalam pembuatan aplikasi pemantau posisi perangkat sekaligus jejaring sosial (social network) dengan teknologi GPS sebagai tugas akhir skripsi.
•
Responden adalah para pengguna smartphone.
•
Terima kasih atas kesediaannya untuk mengisi kuesioner ini.
Nama
:
Umur
:
Jenis kelamin :
1. Apakah Anda pernah menggunakan aplikasi pelacak berteknologi GPS? a. Ya (lanjut ke No. 2) b. Tidak (lanjut ke No. 4)
2. Apa nama aplikasi yang sudah pernah Anda gunakan? Foursquare Glympse Waze Loopt Lainnya :
3. Fitur apa yang Anda sukai dari aplikasi yang telah Anda pilih di atas?
L1
L2
4. Dalam sebuah aplikasi, bahasa apa yang lebih nyaman untuk Anda gunakan ? a. Bahasa Indonesia b. Bahasa Inggris
5. Ketika Anda menjalankan aplikasi, apakah Anda menginginkan aplikasi langsung mengaktifkan internet (GPRS, HSDPA, dll) secara otomatis? a. Ya b. Tidak, lebih baik internet diaktifkan secara manual
6. Dimana letak menu yang nyaman digunakan pada layar smartphone Anda?
a.
b.
L3
7. Berapa jumlah menu yang lebih Anda sukai jika diaplikasikan pada smartphone touch screen?
a.
(4 buah menu)
b.
(5 buah menu)
c.
(6 buah menu)
8. Urutkan menu berikut yang akan Anda sering gunakan (1 = paling sering): Map
: Menu untuk melihat posisi friends
List
: Menu untuk menampilkan status-status friends
Group
: Menu untuk menampilkan friends dan group yang Anda
miliki Notification
: Menu untuk menampilkan pesan peringatan
Profile
: Menu untuk menampilkan data diri dan pengubahannya
Settings
: Menu untuk mengubah pengaturan yang berkaitan
dengan aplikasi
9.
Apakah Anda ingin pengaturan (settings) pada aplikasi Anda disimpan di server sehingga dapat digunakan kembali jika Anda berganti perangkat ? a. Ya b. Tidak
L4
10.
Dalam penggunaan aplikasi peta, cara mana yang lebih Anda sukai untuk melakukan perbesaran atau pengecilan (zoom in – zoom out) pada peta ? a. Slider
11.
b. Button
c. 2 Fingers
Untuk memantau lokasi user lainnya, berapa jumlah user yang ingin Anda tampilkan di dalam peta (semakin banyak user yang ditampilkan maka aplikasi semakin membutuhkan memori, bandwidth dan waktu)? a. 1 – 5 user
12.
b. 6 – 10 user
c. >10 user
Dari data pengguna berikut ini, data pengguna mana saja yang ingin Anda tampilkan pada profile pengguna? Name Birthdate Gender Address Phone Hobby
L5
LAMPIRAN 2 KUESIONER EVALUASI IMK
Perancangan Aplikasi Pemantau Posisi dan Media Komunikasi dengan Teknologi LBS Nama
:
Umur
:
Jenis kelamin
:
1. Apakah aplikasi pemantau lokasi berbasis LBS pada Android ini mudah digunakan? a. Mudah b. Sulit 2. Apakah fitur-fitur pada aplikas ini sudah sesuai dengan apa yang diharapkan? a. Sesuai b. Tidak sesuai 3. Apakah aplikasi ini akan memudahkan Anda dalam mencari sesama pengguna? a. Ya b. Tidak 4. Apakah penyediaan website berguna untuk Anda? a. Ya (lanjut ke no. 5) b. Tidak (lanjut ke no. 6) 5. Apakah website tersebut mudah digunakan? a. Ya
L6
b. Tidak Untuk pertanyaan nomor 5-7, nilai 1 = paling buruk, nilai 10 = paling baik 6. Dari nilai 1 - 10, berapa nilai yang Anda berikan untuk rancangan antarmuka pada aplikasi ini? 7. Dari nilai 1 - 10, berapa nilai yang Anda berikan untuk kegunaan aplikasi ini? 8. Dari nilai 1 - 10, berapa nilai yang Anda berikan untuk performa aplikasi ini? 9. Apakah Anda setuju jika aplikasi dan website ini dirilis ke public untuk digunakan? a. Setuju b. Tidak setuju 10. Jika aplikasi ini berbayar, berapa harga maksimal yang bersedia Anda bayar? a. Gratis b. < $1 c. $1 - $2 d. > $2 11. Apakah Anda akan merekomendasikan aplikasi ini kepada rekan Anda? a. Ya b. Tidak 12. Apa yang menyebabkan Anda akan berhenti menggunakan aplikasi ini? a. Sudah ada aplikasi lain yang lebih baik b. Bosan c. ________________________________________________________ L ainnya, sebutkan _______________________________________________
L7
13. Saran: a. ________________________________________________________ b. ________________________________________________________ c. ________________________________________________________
L8
LAMPIRAN 3 SOURCE CODE APLIKASI
1.
Code untuk memasukkan Google Maps pada android.
2.
Code untuk memasukkan Google Maps pada website.
L9
include 'connection.php'; session_start(); if(isset($_SESSION['username'])==false){ header("location:index.php"); } $userid = $_SESSION['userid']; $query = "select * from ms_user_position where userid like '$userid' ORDER BY time desc"; $result = mysql_query($query,$connection); $res = mysql_fetch_array($result); $positionid = $res['positionid']; $query2 = "select * from ms_position where positionid like '$positionid'"; $result2 = mysql_query($query2,$connection); $res2 = mysql_fetch_array($result2); $longitude = $res2['longitude']; $latitude = $res2['latitude']; ?> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"> <script> // Set the Map variable var map; function initialize() { var myOptions = { zoom: 15, mapTypeControl: true, mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}, navigationControl: true,
L10
navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}, mapTypeId: google.maps.MapTypeId.ROADMAP };
var all = [ 0"; $result4 = mysql_query($query4,$connection); } else{ $query4 = "select * from ms_user"; $result4 = mysql_query($query4,$connection); } $i = 0; $response = array(); while($res4 = mysql_fetch_array($result4)){ $friendid = $res4['userid']; $friendname = $res4['name'];
L11
$friendphoto = ""; if($res4['photo']== "img/$friendid.jpg"){ $friendphoto = $res4['photo']; } else{ $friendphoto = "img/default.png"; }
$query7 = "select * from ms_group where userid like '$userid' and groupmember like '%$friendid%'"; $result7 = mysql_query($query7,$connection); $res7 = mysql_fetch_array($result7); $groupname = $res7['groupname']; $query5 = "select * from ms_user_position where userid like '$friendid' ORDER BY time desc"; $result5 = mysql_query($query5,$connection); $res5 = mysql_fetch_array($result5); $positionidfriend = $res5['positionid']; $time = $res5['time']; $query6 = "select * from ms_position where positionid like '$positionidfriend'"; $result6 = mysql_query($query6,$connection); $res6 = mysql_fetch_array($result6); $longitudefriend = $res6['longitude']; $latitudefriend = $res6['latitude']; ?> ["","", "", "","", ""],
L12
];
var infoWindow = new google.maps.InfoWindow; map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
// Set the center of the map var pos = new google.maps.LatLng(-6.211544, 106.845172); map.setCenter(pos); var pos = new google.maps.LatLng(, ); map.setCenter(pos);
var companyLogo = new google.maps.MarkerImage('image/logo_bintang.png', new google.maps.Size(70,100), new google.maps.Point(0,0), new google.maps.Point(50,50) );
L13
var companyShadow = new google.maps.MarkerImage('image/logo_bintang_bayangan.png', new google.maps.Size(70,100), new google.maps.Point(0,0), new google.maps.Point(30, 50) ); var companyMarker = new google.maps.Marker({ position: pos, map: map, icon: companyLogo, shadow: companyShadow, title:"Your Position" });
function infoCallback(infowindow, marker) { return function() { infowindow.open(map, marker); }; }
function setMarkers(map, all) { for (var i in all) {
var name = all[i][0]; var lat
= all[i][1];
var lng
= all[i][2]; var photo
= all[i][3];
var time
= all[i][4];
var groupname
= all[i][5];
var latlngset; latlngset = new google.maps.LatLng(lat, lng);
L14
var companyLogo2 = new google.maps.MarkerImage('image/logo_bintang_friend.png', new google.maps.Size(70,100), new google.maps.Point(0,0), new google.maps.Point(50,50) ); var companyShadow2 = new google.maps.MarkerImage('image/logo_bintang_bayangan.png', new google.maps.Size(70,100), new google.maps.Point(0,0), new google.maps.Point(30, 50) ); var marker = new google.maps.Marker({ map: map, title: name, icon: companyLogo2, shadow: companyShadow2, position: latlngset }); var content = '
'+ name +'
'+ groupname +'
'+ time+'
';
var infowindow = new google.maps.InfoWindow(); infowindow.setContent(content); google.maps.event.addListener( marker, 'click', infoCallback(infowindow, marker) );
L15
} }
// Set all markers in the all variable setMarkers(map, all); };
// Initializes the Google Map google.maps.event.addDomListener(window, 'load', initialize);
3.
Code untuk mendapatkan lokasi pada android. @Override protected void onPostResume() { super.onPostResume(); if(TestActivity.LOCATION_PROVIDER!=null){ if(TestActivity.LOCATION_PROVIDER.equals("GPS")){ mapLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000,2,this); System.out.println("GPS DIPILIH"); } else if(TestActivity.LOCATION_PROVIDER.equals("Cell Tower")){ mapLocManager.requestLocationUpdates(LocationManager.NETWORK _PROVIDER,2000,2,this); System.out.println("BTS DPILIH");
L16
} else{ mapLocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000,1,this);
mapLocManager.requestLocationUpdates(LocationManager.NETWORK_PROV IDER,2000,0, NetworkListener); } } ... } public void onLocationChanged(Location location) { System.out.println("LOCATION CHANGED"); if(userPosition.latitude != location.getLatitude() || userPosition.longitude != location.getLongitude()){ userPosition = new LatLng(location.getLatitude(), location.getLongitude()); userMarker.setPosition(userPosition); setMap(); Double lati = location.getLatitude(); Double lng = location.getLongitude(); Long time = location.getTime();
L17
db.updateUserPosition(userid, lati.toString() , lng.toString(),time.toString() , ""); } gpsLocation = location; }
LocationListener NetworkListener = new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) {} @Override public void onProviderEnabled(String provider) {} @Override public void onProviderDisabled(String provider) {} @Override public void onLocationChanged(Location location) { System.out.println("NETWORK LOCATION "+locCounter); if(gpsLocation==null){ locCounter++; } else{ locCounter = 0; gpsLocation = null; }
L18
if(locCounter==3){ locCounter = 0; userPosition = new LatLng(location.getLatitude(), location.getLongitude()); userMarker.setPosition(userPosition); setMap(); Double lati = location.getLatitude(); Double lng = location.getLongitude(); Long time = location.getTime(); db.updateUserPosition(userid, lati.toString() , lng.toString(),time.toString() , ""); } } };
4.
Method untuk menggambar rute pada Google Maps. public void drawPath(Route r){ System.out.println("GAMBAR RUTE"); routePoints = r.getPoints(); System.out.println("BESAR"+routePoints.size()); polylineList.clear(); List
tampung = new ArrayList();
L19
for(int i =0; i< routePoints.size();i++){ double latitude =
routePoints.get(i).getLatitudeE6()/1E6; double longitude = routePoints.get(i).getLongitudeE6()/1E6; tampung.add(new LatLng(latitude, longitude)); if(i==0){ if(start!=null)start.remove(); start = mapView.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pinstart)) .position(new LatLng(latitude, longitude))); } if(i==routePoints.size()-1){ if(end!=null)end.remove(); end = mapView.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pinend)) .position(new LatLng(latitude, longitude)));
} } final Iterator it = tampung.iterator();
L20
LatLng temp = it.next(); LatLng temp2; while (it.hasNext()) { System.out.println("JALAN SEKALI"); temp2 = it.next(); System.out.println("LATITUDE " +temp2.latitude); polylineList.add(mapView.addPolyline(new PolylineOptions().add(temp, temp2).color(Color.BLUE).width(10))); temp = temp2; } }
5.
Method untuk menerima push message. protected void onMessage(Context context, Intent intent) { Log.i(TAG, "Received message"); System.out.println("INTENTED " +intent); String message =intent.getExtras().getString("price");; newMessage = message; if(oldMessage.equals(newMessage))return; else oldMessage = newMessage; dbMobile = TestActivity.dbMobile; message1 = intent.getExtras().getString("price"); pisah = message1.split("!!");
L21
System.out.println("MESS="+message1); if(pisah[0].equals("updt_pos")){ System.out.println("JALAN"); System.out.println(message1); intent = new Intent(BROADCAST_ACTION); intent.putExtra("message" , message1); context.sendBroadcast(intent); try { PhotosActivity.reloadMarker = 1; } catch (Exception e) { // TODO: handle exception } System.out.println("PISAH1 "+ pisah[1]); System.out.println("PISAH1 "+ pisah[2]); System.out.println("PISAH1 "+ pisah[3]); System.out.println("PISAH1 "+ pisah[4]); System.out.println("PISAH1 "+ pisah[5]); dbMobile.updateUserPosition(pisah[1],pisah[2], pisah[3],pisah[4], pisah[5]);
}else{ try{ kind = pisah[0];
L22
message = pisah[9]; new updatedatabasemobile().execute(pisah); } catch(Exception e){ System.out.println("GCM EXCEPTION "+e.toString()); }
} if(kind.equals("notif")){ CommonUtilities.displayMessage(context, message); } if(TestActivity.NOTIFICATION==null){ SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); TestActivity.INTERVAL = sharedPref.getString(SettingAct.PREF_INTERVAL, "10"); TestActivity.LIST_COUNT = sharedPref.getString(SettingAct.PREF_LIST, "10"); TestActivity.LOCATION_PROVIDER = sharedPref.getString(SettingAct.PREF_LOCATION_SERVICE, "Auto"); TestActivity.NOTIFICATION = sharedPref.getBoolean(SettingAct.PREF_NOTIFICATION, true);
L23
TestActivity.VIBRATE = sharedPref.getBoolean(SettingAct.PREF_VIBRATE, true); TestActivity.LED = sharedPref.getBoolean(SettingAct.PREF_LED, true); } else{ if(TestActivity.NOTIFICATION){ generateNotification(context, message); } } }