Let’s Begin
Oke, sekarang buat project Android baru di Eclipse, nama project MapDriver,minimum SDK adalah 8 dan pastikan mempunyai Google API.
Setelah itu mari kita buat tampilan utamanya dulu, bernama main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| <? xml version = "1.0" encoding = "utf-8" ?> android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" android:gravity = "center" > < TextView android:id = "@+id/NamaProgram" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:textColor = "#000000" android:textStyle = "bold" /> < Button android:id = "@+id/getLocationButton" android:text = "Get Location" android:layout_width = "wrap_content" android:layout_height = "wrap_content" /> < Button android:id = "@+id/viewOnMapButton" android:text = "View On Map" android:layout_width = "wrap_content" android:layout_height = "wrap_content" /> </ LinearLayout > |
Tampilan utama berisikan dua tombol utama, satu untuk melihat lokasi saat ini, dan satunya untuk melihat lokasi pada peta.
Sekarang kita akan buat main programnya, untuk bisa mendeteksi lokasi, pertama-tama kita harus menginstansiasi kelas Location Manager yang berfungsi untuk mengakses location services, location manager akan diturunkan dari kelas parent Context dan didapatkan lewat method getSystemService() . Kemudian kita meminta update lokasi dari perangkat menggunakan method requestLocationUpdates(), pada method itu kita akan menggunakan beberapa parameter, yaitu jenis provider layanan lokasi yang diinginkan (pada kasus ini adalah layanan GPS), kemudian interval minimum untuk pemberitahuan (dalam milisekon), jarak minimun untuk pemberitahuan (dalam meter), dan yang terakhir adalah sebuah kelas yang mengimplementasikan LocationListener. Location Listener seperti yang telah dijelaskan di atas, berfungsi untuk memantau perubahan pada lokasi pengguna dan juga perubahan pada status provider. Semua fungsionalitas di atas bisa diterjemahkan ke dalam kode seperti di bawah ini :
MapDriverActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
| package org.example.mymap; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Toast; public class MapDriverActivity extends Activity implements OnClickListener { private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1 ; // dalam Meters private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000 ; // dalam Milliseconds protected LocationManager locationManager; protected View getLocationBut; protected View viewOnMapBut; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); getLocationBut = findViewById(R.id.getLocationButton); viewOnMapBut = findViewById(R.id.viewOnMapButton); getLocationBut.setOnClickListener( this ); viewOnMapBut.setOnClickListener( this ); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new MyLocationListener() ); } protected void showCurrentLocation() { Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null ) { String message = String.format( "Lokasi saat ini \n Longitude: %1$s \n Latitude: %2$s" , location.getLongitude(), location.getLatitude() ); Toast.makeText(MapDriverActivity. this , message, Toast.LENGTH_LONG).show(); } } private class MyLocationListener implements LocationListener { public void onLocationChanged(Location location) { String message = String.format( "Deteksi Lokasi Baru \n Longitude: %1$s \n Latitude: %2$s" , location.getLongitude(), location.getLatitude() ); Toast.makeText(MapDriverActivity. this , message, Toast.LENGTH_LONG).show(); //switchToMap(); } public void onStatusChanged(String s, int i, Bundle b) { Toast.makeText(MapDriverActivity. this , "Status provider berubah" , Toast.LENGTH_LONG).show(); } public void onProviderDisabled(String s) { Toast.makeText(MapDriverActivity. this , "Provider dinonaktifkan oleh user, GPS off" , Toast.LENGTH_LONG).show(); } public void onProviderEnabled(String s) { Toast.makeText(MapDriverActivity. this , "Provider diaktifkan oleh user, GPS on" , Toast.LENGTH_LONG).show(); } } public void switchToMap() { Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); Intent i = new Intent( this , MyMap. class ); Bundle b = new Bundle(); b.putDouble( "longitude" , location.getLongitude()); b.putDouble( "latitude" , location.getLatitude()); Log.v( "info" , "The lat " +location.getLatitude()); Log.v( "info" , "The lng " +location.getLongitude()); i.putExtras(b); startActivity(i); } public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.getLocationButton : showCurrentLocation(); break ; case R.id.viewOnMapButton : switchToMap(); break ; } } } |
Tidak ada komentar:
Posting Komentar