Membuat Aplikasi Location Based Services di Android

Last Updated on 12 years by Mas Herdi

Warming Up

Aplikasi kita nantinya akan mempunyai dua tampilan, yaitu tampilan utama dan tampilan peta. Tampilan utama berupa pilihan menu seperti pada gambar di atas, kita juga akan memantau lokasi dari sini, dan berpindah ke aktivitas lain. Sedangkan tampilan peta, berupa sebuah Android Maps dengan koordinat yang mengacu pada lokasi kita saat itu, dengan marker yang akan memunculkan infowindow apabila marker tersebut di-klik.

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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    >
    <TextView
        android:id="@+id/NamaProgram"
        android:text="http://twoh.co"
        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

package id.attwhx.twmaps;

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;

		}
	}

}

Interface LocationListener diimplementasikan ke dalam inner class bernama MyLocationListener, pada kelas tersebut terdapat methods yang berfungsi untuk menghandle event apabila terjadi perubahan pada lokasi user atau perubahan pada status provider, dalam kasus ini kita hanya akan menampilkan Toast yang berisikan info. Kemudian apabila kita mengeklik tombol GetLocation, maka method showCurrentLocation() akan dieksekusi. Method itu akan memanggil getLastKnownLocation() dari kelas LocationManager yang akan memberikan Location terakhir yang terdeteksi. Dari object Location tersebut, kita akan dapat mengetahui parameter-parameter seperti latitude, longitude, altitude, speed, dsb. …Lanjut ke halaman 3





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

74 Comments
  1. margaret_fun June 11, 2012
    • Herdi Naufal June 11, 2012
  2. margaret_fun June 13, 2012
    • Herdi Naufal June 14, 2012
      • margaret_fun June 15, 2012
        • Herdi Naufal June 15, 2012
  3. nia August 29, 2012
    • Herdi Naufal August 30, 2012
      • nia August 30, 2012
        • Herdi Naufal August 30, 2012
  4. nia September 4, 2012
  5. Rahmat September 5, 2012
    • Herdi Naufal September 13, 2012
  6. rendy October 7, 2012
  7. Arif October 23, 2012
    • Herdi Naufal October 23, 2012
      • Arif November 1, 2012
        • twoh December 14, 2012
  8. Randi October 26, 2012
  9. robby November 4, 2012
    • twoh December 14, 2012
  10. Levi November 5, 2012
    • twoh December 14, 2012
  11. Aas November 13, 2012
    • Herdi Naufal November 19, 2012
  12. Bas February 1, 2013
    • Herdi Naufal February 1, 2013
      • Bas February 1, 2013
        • Herdi Naufal February 2, 2013
          • Bas February 2, 2013
          • Herdi Naufal February 9, 2013
  13. Frans March 3, 2013
  14. Pandu March 17, 2013
    • Herdi Naufal March 18, 2013
      • pandu March 19, 2013
        • Herdi Naufal March 19, 2013
  15. Adit March 31, 2013
    • Herdi Naufal March 31, 2013
  16. winduuut April 3, 2013
    • Herdi Naufal April 4, 2013
  17. evan December 6, 2013
  18. nurman February 26, 2014
    • Hafizh Herdi Naufal April 25, 2014
  19. Michael April 24, 2014
  20. Michael April 24, 2014
    • Hafizh Herdi Naufal April 25, 2014
      • agungs April 25, 2014
  21. Marhendy November 3, 2014
  22. choderi November 13, 2014
  23. choderi November 21, 2014
  24. Andykha November 22, 2014
  25. ragil January 22, 2015
  26. dila May 6, 2015
    • Hafizh Herdi Naufal May 6, 2015
      • dila May 9, 2015
  27. Dwi Sekti October 15, 2015
    • Dwi Sekti October 15, 2015
      • Hafizh Herdi October 16, 2015
        • Dwi Sekti October 27, 2015
  28. harry February 10, 2016
  29. jizran December 16, 2016

Leave a Reply

Your email address will not be published. Required fields are marked *

TWOH&Co.