Mengambil Koordinat Lokasi Kita

 

Diketahui:

Saya menggunakan IDE Android Studio

Update SDK

Installah Google Play Service  

Setting Gradle

Lalu dalam file build.gradle masukkan kode berikut ini:

dependencies {

compile 'com.google.android.gms:play-services:9.0.2'

}

Cara memasukkan kode diatas secara otomatis bisa dilihat di sini  

Permission

Dalam file AndroidManifest.xml kita memerlukan permission :

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Keterangan: 

permission ini menggunakan NETWORK_PROVIDER dan GPS_PROVIDER, permission ini akan membuat aplikasi akan memberikan posisi yang tepat.  

 

Activity

Activity harus mengimplementasikan interface berikut ini:

  1. GoogleApiClient.ConnectionCallbacks adalah interface yang menyediakan callback yang dipanggil ketika klien terhubung atau terputus.
  2. GoogleApiClient.OnConnectionFailedListener adalah interface yang menyediakan callback jika klien tidak berhasil terhubung ke servis.
  3. LocationListener adalah interface yang digunakan untuk menerima notifikasi dari LocationManager ketika lokasi telah berubah, metode-metode dalam interface ini dipanggil jika LocationListener sudah didaftarkan oleh servis LocationManager menggunakan requestLocationUpdates(GoogleApiClient client, LocationRequest request, LocationListener listener).

Contoh:

public class MainActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener, LocationListener

 

Pembuatan Variabel

Buatlah variabel global seperti dibawah ini:

private GoogleApiClient gApi;
private Location lokasiAktif;
LocationRequest mintaLokasi;

 

Metode onCreate()

Dalam metode oncreate() buatlah kode seperti berikut ini:

if(gApi==null) {

gApi = new GoogleApiClient.Builder(this)

.addConnectionCallbacks(this)

.addOnConnectionFailedListener(this)

.addApi(LocationServices.API)

.build();

}
mintaLokasi=new LocationRequest();
mintaLokasi.setInterval(10000);
mintaLokasi.setFastestInterval(1000);
mintaLokasi.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

Keterangan:

  • GoogleApiClient adalah class abstrak yang digunakan untuk melakukan koneksi ke Google Play Service
  • Variabel mintaLokasi ini digunakan nanti dalam metode requestLocationUpdates()
  • mintaLokasi.setInterval(10000), kode ini berarti saya mengeset interval untuk update lokasi selama 10000 milidetik/10 detik.
  • mintaLokasi.setFastestInterval(1000), kode ini berarti saya mengeset interval yang tercepat untuk update lokasi selama 1000 milidetik/1 detik.
  • mintaLokasi.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY), Argumen PRIORITY_HIGH_ACCURACY ini berarti kita menggunakan GPS

 

Metode onStart() dan onStop()

Pada metode onStart() dan onStop() buatlah kode seperti dibawah ini:

@Override protected void onStart() {

gApi.connect();
super.onStart();
}

@Override protected void onStop()

{

super.onStop();
LocationServices.FusedLocationApi.removeLocationUpdates(gApi, this);
gApi.disconnect();

}

Keterangan: 

LocationServices.FusedLocationApi.removeLocationUpdates(gApi, this), Kode ini digunakan untuk menyetop permintaan update lokasi.  

 

Metode onConnected

Adalah metode abstrak dari interface GoogleApiClient.ConnectionCallbacks yang harus diimplementasikan.

Buatlah metode onConnected dalam activitymu seperti berikut ini:

public void onConnected(@Nullable Bundle bundle) {

Location lok=LocationServices.FusedLocationApi.getLastLocation(gApi);

if(lok!=null){

   Toast.makeText(this, "Lokasi terakhir: Lat="+String.valueOf(lok.getLatitude())+", Longitude="+String.valueOf(lok.getLongitude()), Toast.LENGTH_LONG ).show();

}else{

LocationServices.FusedLocationApi.requestLocationUpdates(gApi, mintaLokasi, this); Toast.makeText(this, "Lokasi Update: Lat="+String.valueOf(lok.getLatitude())+", Longitude="+String.valueOf(lok.getLongitude()),  Toast.LENGTH_LONG ).show();

}

}

Keterangan:

  • LocationServices.FusedLocationApi.getLastLocation(gApi), kode ini digunakan untuk mengambil data lokasi terakhir
  • LocationServices.FusedLocationApi.requestLocationUpdates(gApi, mintaLokasi, this), kode ini digunakan untuk mengupdate data lokasi sesuai dengan data interval dari argumen LocationRequest yaitu mintaLokasi.

 

Metode onConnectionSuspended

Adalah metode abstrak dari interface GoogleApiClient.ConnectionCallbacks yang harus diimplementasikan.

Buatlah metode onConnectionSuspended dalam activitymu seperti berikut ini:

@Override public void onConnectionSuspended(int i) {

Log.i("Koneksi", "Suspended");

}

 

Metode onConnectionFailed

Adalah metode abstrak dari GoogleApiClient.OnConnectionFailedListener dan harus diimplementasikan.

Masukkan kode berikut ini ke dalam activitymu.

@Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {

Toast.makeText(this,"Gagal Koneksi :"+connectionResult.getErrorMessage() , Toast.LENGTH_LONG).show();

}

 

Metode onLocationChanged

Adalah metode abstrak dari interface LocationListener dan harus diimplementasikan.

Buatlah kode dibawah ini dalam activitymu:

@Override public void onLocationChanged(Location location) {

lokasiAktif=location;

Toast.makeText(this, "Lokasi berubah: Lat="+String.valueOf(lokasiAktif.getLatitude())+", Longitude="+String.valueOf(lokasiAktif.getLongitude()), Toast.LENGTH_LONG ).show(); }

 

Penutup 

Sekian dan terima kasih.

2016 © Fahmi Basya Kartapura