4 Comments

Tutorial Android : Mengakses Posisi Saat Ini dengan GPS

Saat kita membuat sebuah aplikasi layanan berbasis lokasi (location-based service), aplikasi yang kita buat harus dapat mengetahui posisi penggunanya berada saat itu. Cara yang paling umum adalah dengan menggunakan perangkat GPS. Dengan menggunakan GPS, aplikasi dapat mengetahui lokasi pengguna dan dapat memberikan konten yang relevan dengan lokasi tersebut.

The devil is in the details, walaupun mudah dibicarakan, terkadang ada beberapa kendala pada saat implementasi. Semoga tutorial ini bisa memberi sedikit pencerahan, sekaligus sebagai cacatan penulis :mrgreen: , untuk memulai membuat aplikasi berbasis lokasi di telepon genggam berbasis Android.

Sekedar informasi, program yang akan dibuat dikembangkan menggunakan Eclipse Galileo dan Windows 7. Semoga tidak bermasalah saat dijalankan di IDE atau sistem operasi lainnya :D . Selain itu, akan muncul banyak istilah yang lumrah digunakan di bahasa pemrograman Java.

Membuat Project Baru

Langkah pertama yang dilakukan adalah membuat project baru di Eclipse. Deskripsi project dapat dilihat di Gambar 1.

Gambar 1 Membuat project baru.

Menambah permission di AndroidManifest.xml

Untuk dapat mengakses GPS, kita perlu menambahkan permission di AndroidManifest.xml. Jika permission tidak dicantumkan, aplikasi yang akan dibuat tidak bisa berjalan. Berikut adalah kode AndroidManifest.xml yang telah dimodifikasi.

File : AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gpssample"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".GPSSample"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

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

Menambahkan LocationListener

Agar aplikasi yang kita buat dapat berhubungan dengan GPS, kita memerlukan LocationManager dan LocationListener. LocationManager menyediakan akses ke layanan lokasi di Android. Salah satu layanan yang tersedia adalah update lokasi geografis dari perangkat yang digunakan. LocationManager akan mengabarkan setiap perubahan lokasi geografis kepada LocationListener. LocationListener inilah yang nantinya akan kita ubah sesuai dengan kebutuhan kita.

Hal di atas dapat diimplementasikan dalam dua langkah. Pertama, kita buat sebuah class yang mengimplementasikan LocationListener (LocationListener adalah sebuah interface). Ada empat buah method yang harus diimplementasikan, yaitu :

Di fungsi onLocationChanged inilah nilai latitude dan longitude lokasi pengguna akan diterima oleh objek LocationListener. Untuk saat ini, lokasi geografis yang dibaca akan ditampilkan menggunakan Toast. Implementasi dari tahap ini adalah inner class MyLocationListener berikut :

/**
* MyLocationListener
*/
public class MyLocationListener implements LocationListener{
// Dipanggil saat ada perubahan lokasi geografis pengguna
@Override
public void onLocationChanged(Location location) {
// Mendapatkan nilai latitude dari lokasi terbaru
double latitude = location.getLatitude();

// Mendapatkan nilai longitude dari lokasi terbaru
double longitude = location.getLongitude();

// Menampilkan lokasi terbaru menggunakan Toast
String message = "Lokasi saat ini :\n" +
"Latitude  = " + latitude + "\n" +
"Longitude = " + longitude;
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}

// Dipanggil saat provider dinon-aktifkan oleh pengguna
@Override
public void onProviderDisabled(String provider) {
String message = "GPS disabled";
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}

// dipanggil saat provider diaktifkan oleh pengguna
@Override
public void onProviderEnabled(String provider) {
String message = "GPS enabled";
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}

// dipanggil saat ada perubahan status pada provider
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}

Tahap selanjutnya adalah menginisiasikan LocationManager dan LocationListener di aplikasi kita. Pada kasus ini, keduanya diinisiasi di method onCreate dari activity utama aplikasi kita. Dengan demikian, pada saat activity dijalankan, aplikasi kita akan meminta layanan lokasi yang diperlukan.

        // Inisiasi LocationManager dan LocationListener
LocationManager myLocationManager =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener myLocationListener = new MyLocationListener();
myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, myLocationListener);

Berikut adalah kode lengkap dari activity utama aplikasi yang dibuat :

File : GPSSample.java

<pre>package com.example.gpssample;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Toast;

public class GPSSample extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// Inisiasi LocationManager dan LocationListener
LocationManager myLocationManager =
(LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener myLocationListener = new MyLocationListener();
myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, myLocationListener);
}

/**
* MyLocationListener
*/
public class MyLocationListener implements LocationListener{
// Dipanggil saat ada perubahan lokasi geografis pengguna
@Override
public void onLocationChanged(Location location) {
// Mendapatkan nilai latitude dari lokasi terbaru
double latitude = location.getLatitude();

// Mendapatkan nilai longitude dari lokasi terbaru
double longitude = location.getLongitude();

// Menampilkan lokasi terbaru menggunakan Toast
String message = "Lokasi saat ini :\n" +
"Latitude  = " + latitude + "\n" +
"Longitude = " + longitude;
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}

// Dipanggil saat provider dinon-aktifkan oleh pengguna
@Override
public void onProviderDisabled(String provider) {
String message = "GPS disabled";
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}

// dipanggil saat provider diaktifkan oleh pengguna
@Override
public void onProviderEnabled(String provider) {
String message = "GPS enabled";
Toast.makeText(getApplicationContext(),
message, Toast.LENGTH_LONG).show();
}

// dipanggil saat ada perubahan status pada provider
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
}

Menjalankan Program

Tahap selanjutnya adalah menjalankan program yang kita buat. Jika anda akan menjalankan program langsung di smartphone, pastikan GPS diaktifkan dan telah terkunci. Selamat bersabar menanti :mrgreen: . Setelah terkunci, aplikasi akan terus menerus menampilkan perubahan lokasi pengguna.

Jika anda akan menjalankan program di emulator, masalah yang harus dihadapi adalah tidak tersedianya GPS di komputer yang kita gunakan. Alhasil kalau applikasi kita jalankan, tidak ada lokasi geografis yang ditampilkan.

Gambar 2 Program yang dijalankan.

Solusinya : beli smartphone Android :mrgreen: . Kalau budget anda terbatas, ada fitur Eclipse yang dapat kita gunakan untuk mengirimkan data GPS ke emulator. Pertama-tama, kita masuk ke DDMS. (Pilih WindowOpen PerspectiveDDMS). Kemedian kita debug aplikasi yang kita buat. Kemudian, pilih tab Emulation Control. Di bagian ini terdapat bagian Location Controls.

Gambar 3 Location controls di DDMS Eclipse.

Di bagian Location Controls inilah kita dapat memasukkan data longitude dan latitude secara manual. Masukkan nilai longitude dan latitude yang akan dikirimkan ke emulator, kemudian tekan tombol send. Sekarang, aplikasi GPSSample yang telah kita buat akan menampilkan posisi geografis pengguna yang telah dikirimkan.

Gambar 4 Lokasi saat ini ditampilkan oleh program.

Sekian. Pertanyaan dan masukan sangat ditunggu :) .

Project lengkapnya dapat diunduh di Google Code.

About these ads

4 comments on “Tutorial Android : Mengakses Posisi Saat Ini dengan GPS

  1. keep posting gan, this article help me so much :)

  2. gan klo aq mau buat app yng fungsinya ngirim lokasi q ke orang gmn tu??? bisa gak????

  3. Mau nanya misalnya aplikasi ini dibuat offline gimana caranya? mendownload peta terus di gabungkan ke program bisa gak??

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: