Belajar Android – Pengenalan GPS Android

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

  1. Bagaimanakah cara mendapatkan Lokasi kita saat ini dengan menggunakan GPS di android ?
  2. 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

  1. 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

51 comments to Belajar Android – Pengenalan GPS Android

  • Fajar.2885

    wah mantap, ane dah lama g buka tau-tau dah ada yang konek gps lg. top lah gan

  • Mr. Brown

    Kerennnn………… ajarin donk 🙂

  • wah mantap nih.

    tp kok gak ada hasil capture-an nya ya?

    hehe…..

  • admin

    @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

  • admin

    @Agastya, wah, bagus nih, kalau kampus IT di indonesia sudah memasukkan mobile programming di kurikulumnya.
    btw Agastya kuliah dimana?

  • Irzan

    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

  • syadzili

    unable to send command to the emulator,.
    knp ya?

  • Agus Haryanto

    @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

  • dapin

    mas, main.xmlnya ada dimana? atau qta buat file baru yang namanya main.xml

  • satria

    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..

  • Agus Haryanto

    @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

  • satria

    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??

  • Don

    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

  • Don

    oh ya mas.. satu lagi.. mohon tutorialnya dong buat bikin jalur dari 1 Tag ke Tag lainnya.. Terima kasih

  • yaz

    bermanfaat sekali mas..thanks..kbtulan saya newbie yg lge nyusun skripsi tentang android jga..minta bimbingan nya mas..

  • mia

    assalamua’laikum pak agus…saya mau menanyakan klo dalam pembuatan contact phone kita memakai permission apa aja ya?terimakasih.

  • Agus Haryanto

    @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?

  • Agus Haryanto

    @Fauzi, itu berarti belum dapat GPSnya, agar cepat mendapatkan koordinat GPSnya, coba keluar rauangan, yang mana langit bisa terlihat tanpa penghalang

  • achel

    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…

  • ican

    mas, gps nya hrs kita input dulu longitude nya ? kan kl 4square bs lgsng, hehe

    mohon bimbingan mas 🙂

  • Agus Haryanto

    @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

  • meecha

    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

  • eko

    maaf saya ingin bertanya. bisakah latitude ama longtitude di kirim secara automatis melalui sms dengan menambahkan program…..??

    Terima kasih banyak….

  • juwita

    mas kok gak muncul yak nilai inputan’a?

  • afan

    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. 🙂

  • tegam

    wah,,,tutorialnya sukses ni,walaupun awalnya ada debug,tp udah bs perbaikin ndiri,,lanjut tutorial berikutnya…!!!

  • denz

    ditunggu artikel lanjutannya gan…

  • cover

    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.

  • Syidiq

    Saya udah coba tapi ko ga muncul ya hasil koordinatnya?

  • Agus Haryanto

    @Syidiq, ini diemulator atau di handset ?. sudah ikuti langkah-langkahnya seperti inject koordinat dari DDMS

  • Agus Haryanto

    @Syidiq, apakah sudah inject koordinatnya melalui emulator kontrol

  • budi

    Mas, kok pas di handset longitude and latitude keluarnya unknown, kalau saya coba pake map, gps jalan, kenapa ya ?

    terima kasih

  • egar

    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

  • sulai

    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.

  • gio

    pak, bisa nggak mengetahui koordinat nya dengan di hubungkan dengan internet..?
    jadi seperti GPS beneran gitu, tapi hanya dengan mengetahui koordinat nya saja..

  • gio

    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/
    ——————————————-

  • oliver

    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

  • Redy

    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..

  • randi

    Om kalau muncul pesan error please fix them kira2 kesalahanya ada dimana ya?

  • Agus Haryanto

    @randy, Bararti kodingnya masih ada yang salah, coba perhatikan di kodingnya ada yang warna merah nggak

  • rizki

    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

  • ahmad rifai

    maaf pak, setelah saya test di handphone android. kok masih unknow ya pak? mohon pencerahannya. 🙂

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>