Jumpa lagi dengan Agus Haryanto diseri tutorial Android, kalau pada tutorial sebelumnya yang kita bahas fitur CALL android yang berfungsi untuk melakukan panggilan. Sekarang mari kita melangkah ke fitur yang sangat berguna untuk pembuatan aplikasi yang keren, fitur itu adalah GPS (Global Positionning System).
Hampir Semua Handphone ber OS android dilengkapi GPS, sebetulnya apasih GPS itu.
GPS adalah singkatan dari Global Positionning System, dengan GPS kita dapat mengetahui lokasi kita berada yaitu data koordinat Latitude dan Longitudenya. Bagi yang pernah membuat aplikasi yang menggunakan MAP (Geography Information System) pasti sudah mengenal istilah ini.
GPS hanyalah hardware, untuk memaksimalkannya kita perlu membuat aplikasi yang memanfaatkan GPS.
Ada pertanyaan nih, setelah mengetahui fungsi GPS, kira-kira aplikasi apa yang akan kita bangun ?
Ingat Social networking FourSquare, dimana pada foursquare kita dapat mengetahui posisi teman-teman kita yang sedang online, sehingga apabila ada yang jaraknya dekat dengan kita maka kita bisa copy darat.
Sekarang kita masuk kemateri utama, mulailah belajar dengan pertanyaan
- Bagaimanakah cara mendapatkan Lokasi kita saat ini dengan menggunakan GPS di android ?
- Bagaimanakah cara menampilkannya dalam bentuk MAP ?
Kita akan jawab dengan pembuatan Aplikasi Android LokasiKu.
1. Seperti biasa kita buat project baru
2. Pada project ini kita akan menampilkan posisi Koordinat yang ditangkap oleh GPS. Untuk itu kita siapkan layoutnya, buka file main.xml tuliskan kode berikut
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Longitute: "></TextView> <TextView android:id="@+id/TextViewLongitude" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="unknown"></TextView> <TextView android:id="@+id/TextView03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Latitude: "></TextView> <TextView android:id="@+id/TextViewLatitude" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="unknown"></TextView> </LinearLayout>
3. Setelah Layout kita perlu menambahkan permission pada file AndroidManifest.xml
- Setelah Layout kita perlu menambahkan permission pada file AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.agus"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Lokasiku"
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-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
</manifest>
penambahannya ada pada line 18,19 dan 20
5. Sekarang kita kebagian inti yaitu dibagian javanya, buka file LokasiKu.java ketikkan kode berikut
package com.agus;
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.TextView;
import android.widget.Toast;
public class Lokasiku extends Activity {
private LocationManager lm;
private LocationListener locationListener;
private TextView latituteField;
private TextView longitudeField;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
latituteField = (TextView) findViewById(R.id.TextViewLatitude);
longitudeField = (TextView) findViewById(R.id.TextViewLongitude);
// ---use the LocationManager class to obtain GPS locations---
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new MyLocationListener();
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
}
/**
* Listener Untuk Menangkap setipa perbubahan Lokasi dari GPS
*
*
*/
private class MyLocationListener implements LocationListener {
//Menampilkan Update Lokasi GPS terkini
@Override
public void onLocationChanged(Location loc) {
if (loc != null) {
latituteField.setText(String.valueOf(loc.getLatitude()));
longitudeField.setText(String.valueOf(loc.getLongitude()));
Toast.makeText(
getBaseContext(),
"Location changed : Lat: " + loc.getLatitude()
+ " Lng: " + loc.getLongitude(),
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
}
Untuk menangkap nilai yang dihasilkan oleh GPS android kita menggunakan class LocationManager dan LocationListenner.
Agar setiap terjadi perubahan lokasi, aplikasi kita terus mendapatkan informasi terkini, maka kita perlu membuat inner class yang mengimplement class LocationListenner. Pada program diatas informasi GPS yang berupa letak Latitude dan Longitude posisi kita, di tampilakn pada 2 buah textView. Selain itu kita tampilkan juga dalam bentuk Toast.
Sekarang mari kita jalankan projectnya

Hasilnya masih unknown, lho kok bisa unknown, ia karena nilai defultnya kita set “unknown”, coba perhatikan di file main.xml
Sekarang mari kita coba update lokasinya, Kalau di eclipse kita bisa menggunakan emulator control. Apabila jendela Emulation Control belum ada, kita bisa menampilkannya dengan cara klik Window –> Show View –>Other
Pilih Emulator Control lalu klik OK
Pada Jendela Emulator Kontrol kita bisa set Longitude dan Latitude GPSnya, Karena saya tinggal dijakarta, isikan saja Longitude = 106.85324 dan Latitute=-6.23326
Klik tombol Send
Kembali ke Emulator Android dan lihat apa yang terjadi
Sekarang Nilai Longitude dan Latitude nya sudah terisi, sesuai dengan Nilai yang kita berikan di emulator control.
Coba kita rubah lagi nilai longitude dan Latitude pada Emulator Control lalu klik tombol send maka pada emulator android nilai dari longitude dan latitudenya juga akan berubah sesuai dengan nilai yang ada di emulator control
Sampai disini kita baru setengah jalan, kita baru berhasil mendapatkan koordinatnya. Tujuan kita adalah menampilkan Lokasi kita sekarang dalam MAP. Untuk langkah selanjutnya bisa dilihat ditutorial selanjutnya yang akan membahas menampilkan Google Map di android
Note : untuk yang belum pernah membuat aplikasi android dieclipse, untuk memulainya bisa melihat tutorial Aplikasi Android Sederhana – Manghitung Luas Persegi Panjang
Salam Hangat
Agus Haryanto





wah mantap, ane dah lama g buka tau-tau dah ada yang konek gps lg. top lah gan
Kerennnn………… ajarin donk 🙂
wah mantap nih.
tp kok gak ada hasil capture-an nya ya?
hehe…..
@civer, pada article ini memang hanya menangkap koordinat dari gps saja. kalau mau ditampilkan dalam map, kita bisa padukan dengan tutorial Belajar Android Membuat Marker dan Infowindow di google di blog ini
Thanks banget utk Admin yg udah sharing artikel ini.
Kebetulan saya ada mata pelajaran mobile programming di kampus, dimana setiap student diharapkan sudah berhasil membuat aplikasi mobile berbasis Android atau BlackBerry pada akhir semester ini.
Utk pembelajaran, artikel yg admin share disini sangat membantu.
Regards,
Agastya
@Agastya, wah, bagus nih, kalau kampus IT di indonesia sudah memasukkan mobile programming di kurikulumnya.
btw Agastya kuliah dimana?
Great tutorial untuk admin! 🙂
Tetapi yg saya mau tanyakan, itu di sini kan koordinat GPS nya dimasukin secara manual, kalau detect otomatis tp pake emulator tanpa kita masukin value longitude latitudenya bisa gak ya Mas?
Mohon pencerahannya. Thanks
unable to send command to the emulator,.
knp ya?
@syadzili, wah, kalau ini komunikasi antara si eclipse dengan emulator android dah terputus, coba close emulatornya, dan coba jalanin lagi.
kalau nggak bisa juga coba restart komputer, dan coba lagi
mas, main.xmlnya ada dimana? atau qta buat file baru yang namanya main.xml
Mas, kalo kita udah bisa bikin Peta.. terus mau nampilin lokasi kita tanpa meletakkan titik koordinat kita di source code nya gmn?? Jadi lokasi kita ditentukan oleh GPS.. Saya udah bisa nentuin lokasi dan mendapatkan titiknya dgn GPS.. Tp bingung mau naro markernya gmn?? udah dicoba, markernya malah nunjukin lokasi 0,0 yg berarti marker ditaro duluan waktu nilai lokasi belum ditangkap oleh GPS.. Solusinya gmn yah?? Mohon dijawab plisss..
@satria, sudah dicoba bikin 2 activity satu untuk menangkap GPS kalau nilai GPS dah didapatkan baru call Activity kedua yaitu menampilkan titik GPS tadi dalam MAP
waduh bingung, hehe.. Saya bikinnya 1 activity dengan 2 class..
Jadi 1 file java namun ada 2 class..
Yg 1 class utama buat nampilin Peta dari google maps, lalu di dalamnya ada 2 class,
class yg pertama class DispLocListener implements LocationListener untuk mencari nilai dgn GPS,
Lalu class yang kedua SitesOverlay extends ItemizedOverlay untuk meletakkan markernya..
Saya ikutin tutorial dari buku Mulyadi, ST “Membuat Aplikasi Android”, tapi saya lihat sekilas mirip dgn anda..
Saya udah masukkin nilai variabel dari hasil pencarian nilai dgn GPS ke marker.. Tp tetep gak kebaca..
Kalo bikin 2 activity brarti ada 2 file java yah?? Manggilnya pake Intent??
Trus kalo misalnya daerah yang dicakup bukan jakarta aja gimana cara ngasih info Longitude dan Latitute di emulator krontolnya??
atau kita harus hafal nilai-nilainya?
terus kalo mau bikin jalurnya gmn y mas admin? jadi dari tag yang udah di Map mau kita samperin. biar lebih mudahkan dibuatin jalurnya dari kita berdiri sekarang.. terimakasih mohon bantuannya
oh ya mas.. satu lagi.. mohon tutorialnya dong buat bikin jalur dari 1 Tag ke Tag lainnya.. Terima kasih
bermanfaat sekali mas..thanks..kbtulan saya newbie yg lge nyusun skripsi tentang android jga..minta bimbingan nya mas..
assalamua’laikum pak agus…saya mau menanyakan klo dalam pembuatan contact phone kita memakai permission apa aja ya?terimakasih.
@mia, maksudnya mia mau akses contact phonenya android ?
Mas.. Emulator Control pada Eclips (Galileo) saya hiden.
Longitude dan Latitude tidak dapat di rubah. d klick aja ga bisa.
Mohon pencerahannya. Thx..
mas, aku udah berhasil buat di eclipse n dah berjalan dengan baik di emulatornya, tp pas aku eksport ke apk trus aku install di android beneran kok jadi unknown yah longitude sama latitudenya?
@Fauzi, itu berarti belum dapat GPSnya, agar cepat mendapatkan koordinat GPSnya, coba keluar rauangan, yang mana langit bisa terlihat tanpa penghalang
Stw saya, selain mengatur melalui emulator kita juga bs download aplikasi myFakeLocation..jadi di aplikasi itu akan menetukan lokasi itu.. Sehingga pada saat run di emulator dideteksi sprti yg kita set di myFake location…
mas, gps nya hrs kita input dulu longitude nya ? kan kl 4square bs lgsng, hehe
mohon bimbingan mas 🙂
@ican, Coba deh mas ican coba intall hasil apk dari project ini ke android device. lalu jalankan, maka mas ican disitu otomatis akan ditampilkan koordinat tempat mas ican berada
mas maw tanya,
pada snippet :
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
yg 0, 0 itu buat apa ya?
teruskan GPS app yg mas buat di tutorial ini pake satelit,
klo yg pake network sama cell ID gimana ya?
maklum mas masih nuub…
v(^-^)v
maaf saya ingin bertanya. bisakah latitude ama longtitude di kirim secara automatis melalui sms dengan menambahkan program…..??
Terima kasih banyak….
mas kok gak muncul yak nilai inputan’a?
mas mau tanya,,saya dah coba run hasilnya gini :”the application pengenalan GPS has stopped unexpectedly. pleasse try again…
udah saya coba berulang2 hasilnya sama ky gt..mohon bantuannya
alhamdulillah.bisa jalan mas. suwun. ditunggu tutorialnya selanjutnya. bermanfaat sekali. 🙂
wah,,,tutorialnya sukses ni,walaupun awalnya ada debug,tp udah bs perbaikin ndiri,,lanjut tutorial berikutnya…!!!
ditunggu artikel lanjutannya gan…
Terima kasih y mas bwt tutornya..
Mau tny nih mas,
kalau mau kirim lokasi long dan lat yang udah didapet dari GPS android ke halaman web gmn y?
Jadi lokasi nya muncul di halaman web.
Saya udah coba tapi ko ga muncul ya hasil koordinatnya?
@Syidiq, ini diemulator atau di handset ?. sudah ikuti langkah-langkahnya seperti inject koordinat dari DDMS
@Syidiq, apakah sudah inject koordinatnya melalui emulator kontrol
Mas, kok pas di handset longitude and latitude keluarnya unknown, kalau saya coba pake map, gps jalan, kenapa ya ?
terima kasih
mas kenapa saya pas di
@override
public void onLocationChanged(Location loc)
error..kalo Override ny saya hilangkan normal No error..saya langsug tes di handset android GPS udah aktif tapi ga dpt nilai Lat sama Long nya
untuk pengenalan GPS saya sudah berhasil, tap itu dulu.
masalahnya sekarang saya buat project baru tapi emulatornya tidak aktif…tidak bisa diklik apapun
sudah saya restart berkali2 tapi tetap saja.
pak, bisa nggak mengetahui koordinat nya dengan di hubungkan dengan internet..?
jadi seperti GPS beneran gitu, tapi hanya dengan mengetahui koordinat nya saja..
maap pak agus, saya baru baca semua diskusi nya
ternyata utk dapat koordinatnya harus diluar ruangan dan tidak terhalang
maap ya pak agus, saya baru mudeng
setelah dapat koordinatnya bisa nggak ya kita mengirim koordinat tersebut pak agus?
terima kasih pak agus, maap ya pak sekali lagi
Bagus juga buat nambah refrensi ilmu tentang Android bang.,.,
Izin nyimak.. 😀
Kalo ada waktu mampir ke blog aku y bang :
——————————————-
http://itoru-blog.blogspot.com/
——————————————-
saya sudah mencobanya dan saya sudah berhasil pak agus
pada saat saya masuk emulator kontrol kordinat yang saya dapatkan sudah tergenerate secara otomatis mengikut lokasi dari modem yang saya pakai untuk koneksi internet.
nah pertanyaan saya pada main.xml kita kan memasukkan value berupa “unknown”. apakah nanti ketika di jalankan pada devicenya value ini perlu dirubah atau tetap seperti itu?
mohon penjelasannya pak agus?
terima kasih
sudah saya isi di emulator controller nya, dan sudah saya klik send..
tapi, di emulator android’nya tidak berubah..
value’nya tetap unknown..
itu kenapa ya?
mohon solusinya..
terima kasih..
Om kalau muncul pesan error please fix them kira2 kesalahanya ada dimana ya?
@randy, Bararti kodingnya masih ada yang salah, coba perhatikan di kodingnya ada yang warna merah nggak
mas ini kq ga bsa mncul ya koordinatnya knapa ya,pdhal sdah saya inject lewat emulator kontrol…
mohon pencerahannya mas..
terima kasih…
Mas.. Makasih banyak untuk tutorialnya, sangat jelas. 🙂
Tapi saya ada masalah mas saat mengikuti langkah mas di atas. Kenapa saat di running di emulatornya, kok Force close terus ya mas ?? Sudah periksa coding nya berulang kali dan gak ada masalah. Mohon pencerahannya mas sudah keliling-keliling tetep gak nemu jawabannya.
public void onLocationChanged(Location arg0) {
if(loc != null){
}
}
mas, tolong di jelasin, itu loc datengnya dari mana? soalnya di codingannya kan ga ada deklarasi loc, di eclipse ane loc nya ga di kenal mas
regards,
Ricky
astaga, maaf, saya silap, ternyata deklarasi nya lagsung di method nya,
sory mas, soale saya bikin class terpisah file nya, jadi nya lupa 😀
regards,
Ricky
maaf pak, setelah saya test di handphone android. kok masih unknow ya pak? mohon pencerahannya. 🙂