Mengakses Layanan Lokasi pada Android

Tulisan kali ini akan membahas cara untuk mengakses layanan lokasi yang disediakan pada Android. Pada Android layanan lokasi bisa dilakukan melalui:

  • GPS Location Provider (GPS), dan
  • Network Location Provider (Jaringan).

Dari nama yang disebutkan sudah jelas bahwa untuk mengakses lokasi bisa dilakukan melali GPS (Global Positioning System) dan melalui Network/Jaringan. Pada tulisan kali ini perangkat yang akan digunakan adalah berbasis GPS.

Untuk memulai kegiatan praktikum kali ini kita mulai dengan membuka Android Studio kemudian buat Project baru dengan pilihan Empty Activity.
1. Tambahkan permission untuk mengakses location (AndroidManifest.xml) seperti terlihat pada gambar berikut.
AndroidManifest permission GPS

2. Atur windows untuk tampilan seperti tampak pada gambar berikut.
activity_main android gps

3. Buat action pada tombol dimana setiap kali diklik aplikasi akan mengambil nilai longitude dan latitude dari GPS seperti tampak pada source berikut.

public class MainActivity extends AppCompatActivity implements LocationListener {
    private Location location;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final TextView txtView = (TextView) findViewById(R.id.textView);
        final Button btnLoc = (Button) findViewById(R.id.button);
        btnLoc.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                getLocation();
                if(location != null){
                    double latitude = location.getLatitude();
                    double longitude = location.getLongitude();
                    txtView.setText("lo: " + longitude + "\nla :" + latitude);
                }else{
                    txtView.setText("lo: Not Available\nla : Not Available");
                }
            }
        });
    }

    @Override
    public void onLocationChanged(Location location) {}

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {}

    @Override
    public void onProviderEnabled(String s) {}

    @Override
    public void onProviderDisabled(String s) {}


    private void getLocation() {
        final LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        // getting GPS Status
        boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
        if(isGPSEnabled){
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission Not Granted", Toast.LENGTH_SHORT).show();
                return;
            }
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, this);
            this.location =  locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
            locationManager.removeUpdates(this);
        }else{
            showSettingsAlert();
        }
    }

    private void showSettingsAlert(){
        final Context mContext = this;
        final AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

        // Setting Dialog Title
        alertDialog.setTitle("GPS is settings");

        // Setting Dialog Message
        alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?");

        // On pressing Settings button
        alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {
                Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                mContext.startActivity(intent);
            }
        });

        // on pressing cancel button
        alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });

        // Showing Alert Message
        alertDialog.show();
    }
}

Setelah selesai maka jalankan aplikasi dan setelah emulator muncul atur longitude dan latitude seperti yang telah dijelaskan pada tulisan saya sebelumnya yaitu GPS Simulation on Android Emulator maka ketika kita klik tombol akan muncul tampilan seperti pada gambar berikut.
android studio demo get current location.
Dengan berakhirnya praktikum ini maka berakhir sudah kegiatan kali ini. Sampai jumpa pada kegiatan selanjutnya.

Sumber:
     Android GPS, Location Manager Tutorial
     Get Current Location in Android
     Android Show Current Location on Map using Google Maps API




Leave a Reply