PMO Pertemuan 10 ANDROID LOCATION SERVICE

 

ANDROID LOCATION SERVICE

Location Based Service (LBS) atau layanan berbasis lokasi adalah sebuah layanan informasi yang dapat diakses dengan perangkat bergerak melalui jaringan dan mampu menampilkan posisi secara geografis keberadaan perangkat bergerak tersebut. Location Based Service dapat berfungsi sebagai layanan untuk mengidentifikasi lokasi dari seseorang atau suatu objek tertentu, seperti menemukan lokasi mesin ATM terdekat atau mengetahui keberadaan teman.

  1. Unsur Utama LBS

Dua unsur utama dari Location Based Service adalah:

Location Manager (API Maps): Menyediakan perangkat bagi sumber atausource untuk LBS, Application Programming Interface (API) Mapsmenyediakan fasilitas untuk menampilkan atau memanipulasi peta. Paket ini berada pada “com.google.android.maps;”.

Location Providers (API Location): Menyediakan teknologi pencarian lokasi yang digunakan oleh perangkat. API Location berhubungan dengan data GPS (Global Positioning System) dan data lokasi real-time. API Location berada pada paket Android yaitu dalam paket “android.location”. Lokasi, perpindahan, serta kedekatan dengan lokasi tertentu dapat ditentukan melalui Location Manager

2.  Komponen LBS

Terdapat lima komponen pendukung utama dalam teknologi Layanan Berbasis Lokasi, antara lain:

Piranti Mobile, adalah salah satu komponen penting dalam LBS. Piranti ini berfungsi sebagai alat bantu (tool) bagi pengguna untuk meminta informasi. Hasil dari informasi yang diminta dapat berupa teks, suara, gambar dan lain sebagainya. Piranti mobile yang dapat digunakan bisa berupa PDA,smartphone, laptop. Selain itu, piranti mobile dapat juga berfungsi sebagai alat navigasi di kendaraan seperti halnya alat navigasi berbasis GPS.

Jaringan Komunikasi, Komponen ini berfungsi sebagai jalur penghubung yang dapat mengirimkan data-data yang dikirim oleh pengguna dari pirantimobile-nya untuk kemudian dikirimkan ke penyedia layanan dan kemudian hasil permintaan tersebut dikirimkan kembali oleh penyedia layanan kepada pengguna.

Komponen Positioning (Penunjuk Posisi/Lokasi), Setiap layanan yang diberikan oleh penyedia layanan biasanya akan berdasarkan pada posisi pengguna yang meminta layanan tersebut. Oleh karena itu diperlukan komponen yang berfungsi sebagai pengolah/pemroses yang akan menentukan posisi pengguna layanan saat itu. Posisi pengguna tersebut bisa didapatkan melalui jaringan komunikasi mobile atau juga menggunakanGlobal Positioning System (GPS).

Penyedia layanan dan aplikasi, merupakan komponen LBS yang memberikan berbagai macam layanan yang bisa digunakan oleh pengguna. Sebagai contoh ketika pengguna meminta layanan agar bisa tahu posisinya saat itu, maka aplikasi dan penyedia layanan langsung memproses permintaan tersebut, mulai dari menghitung dan menentukan posisi pengguna, menemukan rute jalan, mencari data di Yellow Pages sesuai dengan permintaan, dan masih banyak lagi yang lainnya.

Penyedia data dan konten, Penyedia layanan tidak selalu menyimpan seluruh data dan informasi yang diolahnya. Karena bisa jadi berbagai macam data dan informasi yang diolah tersebut berasal dari pengembang/pihak ketiga yang memang memiliki otoritas untuk menyimpannya. Sebagai contoh basis data geografis dan lokasi bisa saja berasal dari badan-badan milik pemerintah atau juga data-data perusahaan/bisnis/industri bisa saja berasal dari Yellow Pages, maupun perusahaan penyedia data lainnya.

Secara lengkap kelima komponen pendukung LBS tersebut dapat dilihat pada gambar berikut.

3. Cara Kerja LBS

Untuk menggambarkan cara kerja LBS, anggaplah aplikasi LBS akan mencarikan informasi mengenai lokasi restoran yang berada di sekitar posisi pengguna.

Anggaplah sekarang fungsi pencarian telah diaktifkan, posisi pengguna sebenarnya dari perangkat mobile diperoleh dari Positioning Service. Hal ini dapat dilakukan baik oleh perangkat menggunakan GPS sendiri atau layanan posisi jaringan yang berasal dari provider (Cell Tower). Setelah itu perangkat mobile pengguna mengirimkan permintaan informasi, yang berisi tujuan untuk mencari dan mengirimkan posisi melalui jaringan komunikasi ke gateway telekomunikasi.

Gateway memiliki tugas untuk bertukar pesan di antara jaringan komunikasi selular dan internet. Oleh karena itu dia mengetahui alamatweb dari beberapa aplikasi server dan rute permintaan ke spesifik servertertentu. Gateway akan menyimpan juga informasi tentang perangkatmobile yang telah meminta informasi

Aplikasi server membaca permintaan dan mengaktifkan layanan yang terkait.

Kemudian, service menganalisis lagi pesan dan memutuskan mana informasi tambahan selain criteria pencarian (restoran + padang) dan posisi pengguna diperlukan untuk menjawab permintaan pengguna. Dalam kasusu ini service  akan menemukan bahwa pengguna membutuhkan informasi tentang restoran dari database yellow pagespada wilayah tertentu dan kemudian service  tersebut akan meminta penyedia data untuk memberikan data tersebut

Selanjutnya service akan menemukan bahwa informasi tentang jalan, jarak dan cara yang diperlukan untuk memeriksa apakah restoran dapat dicapai

Setelah sekarang semua informasi service akan melakukan buffer spasial dan query routing untuk mendapatkan beberapa restoran terdekat. Setelah menghitung daftar restora terdekat, hasil dikirim kembali ke pengguna melalui internet, gateway  dan jaringan mobile.

Kemudian, informasi mengenai restoran akan disampaikan kepada pengguna baik dalam bentuk peta digital.

4. Aplikasi Berbasis LBS

Berbagai macam contoh aplikasi berbasis LBS misalnya:

  • Layanan Darurat. Contoh: E-911 dan Roadside Assistance
  • Pelacakan (Tracking). Contoh: Commercial: workforcefleet management. Family Locator, Personal Asset Tracking
  • Contoh: Direction, Planning, Assistance
  • Contoh: Road TollingParking
  • LBS Alert. Contoh: Promotion Alert, Advertising
  • Jejaring Sosial. Contoh: Friend-Finder, Instant Messaging
  • Aplikasi Operator Jaringan. Contoh: Location Sensitive Billing, Cellular Fraudulent Detection and Prevention, Wireless Network Optimization dan Cellular Inter-Network Border Negotiation.
  • Aplikasi Penyedia Layanan. Contoh: Fleet Navigation and Management, Wireless M2M, Remote Access/Management Mobile Data/Television, Auto Insurance dan Promotion-Advertising
  • Aplikasi Pengguna Akhir. Contoh: Foursquare, dll.

 

5. Penyedia Layanan LBS

Banyak perusahaan di dunia yang masuk menggarap layanan berbasis LBS. Beberapa di antaranya adalah (Wang, 2008):

  1. Sprint Navigation menyediakan layanan canggih yaitu memberikan panduan suara untuk para pengemudi kendaraan yang butuh petunjuk jalan dan arah beserta peta pergerakan yang berbasis tiga dimensi.
  2. Verizon Chaperone memanfaatkan telepon seluler anak-anak sebagai GPS yang akan membantu para orang tua bisa memantau dan mengetahui keberadaan anak-anak mereka. Layanan ini akan menyediakan informasi lokasi secara terus-menerus di piranti mobileorang tua.
  3. NTT DoCoMo i-Area menyediakan layanan LBS khusus para pengguna FOMA. Layanan ini meliputi security alertdan juga peningkatan efisiensi logistik bisnis.

 

6. LOCATION PERMISSION

Oleh karena melacak lokasi terkini pengguna bisa menyebabkan masalah privasi, pemanfaatan API lokasi dilindungi oleh beberapa permission. Hanya aplikasi dengan permission yang benar saja diijinkan untuk mengakses lokasi pengguna.

Android menyediakan 2 permission untuk lokasi:

  • permission.ACCESS_COARSE_LOCATION

mengijinkan aplikasi untuk mengakses perkiraan lokasi dari pengguna. Informasi lokasi didapatkan dari lokasi jaringan, seperti WiFi dan BTS

  • permission.ACCESS_FINE_LOCATION

mengijinkan aplikasi untuk mengakses lokasi yang tepat dari pengguna. Informasi lokasi didapatkan dari kombinasi GPS dan lokasi jaringan

 

7. LOCATION MANAGER

Developer bisa mengakses ke sensor lokasi pada device melalui Android location service. Location service diakses melalui API Location Manager, yang dipanggil dengan cara sebagai berikut:

1

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

 

8. LOCATION PROVIDER

Location service bergantung pada location provider untuk mengakses lokasi terkini dari pengguna. ?Android mendukung 3 location provider berikut:

  • GPS_PROVIDER

Menentukan lokasi menggunakan satelit GPS. Tergantung dari kondisi lingkungan, provider ini membutuhkan waktu beberapa saat untuk mendapatkan lokasi yang fix dari pengguna. Membutuhkan ACCESS_FINE_LOCATION permission

  • NETWORK_PROVIDER

Menentukan lokasi melalui ketersediaan BTS dan WiFi access point. Membutuhkan ACCESS_COARSE_LOCATION permission

  • PASSIVE_PROVIDER

Menentukan lokasi tanpa meminta lokasi fix saat ini. Artinya, provider ini bergantung pada lokasi yang pernah diminta oleh aplikasi lainnya. Membutuhkan ACCESS_FINE_LOCATION permission.

9. MEMERIKSA KETERSEDIAAN LOCATION PROVIDER

Tidak semua location provider selalu tersedia di setiap waktu. Hal ini disebabkan karena  android mengijinkan pengguna untuk menghidupkan atau mematikan location provider melalui menu pengaturan. Artinya, location provider tidak bisa digunakan ketika misalnya WiFi pada device android dimatikan atau ketika mode pesawat diaktifkan.

Untuk itu, diperlukan pengecekan status dari location provider sebagai berikut:

1

2

3

4

5

if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

            // Use the GPS provider

} else {

            // Use an other provider

}

 

10. LISTENING STATE CHANGES

Ketika pengguna memutuskan untuk mematikan atau menghidupkan location provider melalui menu pengaturan, maka aplikasi akan mendapatakan broadcast message dengan aksi android.location.PROVIDERS_CHANGED

Dengan demikian, aplikasi bisa melakukan aksi berdasarkan event tersebut, misalnya berpindah untuk menggunakan GPS location provider ketika layanan tersebut diaktifkan oleh pengguna.

1

2

3

4

5

6

7

8

9

10

11

private final BroadcastReceiver providerChangedListener = new BroadcastReceiver() {

            @Override

            public void onReceive(Context context, Intent intent) {

                        LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

                        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

                                    // Use the GPS provider

                        } else {

                                    // Use an other provider

                        }

            }

};

1 registerReceiver(providerChangedListener, new IntentFilter(LocationManager.PROVIDERS_CHANGED_ACTION));

 

11. LOCATION UPDATE

Android menyediakan cara untuk mendapatkan update lokasi terkini dari pengguna. Untuk mendapatkan update lokasi, aplikasi melakukan register pada location listener melalui kelas LocationManager. Berikut merupakan contoh untuk implementasi LocationListener.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

private final LocationListener locationListener = new LocationListener() {

            @Override

            public void onLocationChanged(Location location) {

                        // Location update

            }

            @Override

            public void onStatusChanged(String provider, int status, Bundle extras) {

                        // Provider status has changed

            }

            @Override

            public void onProviderEnabled(String provider) {

                        // Provider enabled

            }

            @Override

            public void onProviderDisabled(String provider) {

                        // Provider disabled

            }

};

 

12. INFORMASI PADA LOCATION UPDATE

Objek location pada saat mendapatkan location update mengandung informasi sebagai berikut:

  • Accuracy : perkiraan akurasi dalam satuan meter
  • Altitude : hasil pengukuran berdasarkan World Geodetic System (WGS) 84 dengan satuan meter
  • Bearing : arah / haluan dalam satuan derajat
  • Latitude dan longitude : posisi koordinat dalam derajat
  • Provider : nama location provider
  • Time : waktu

 

13. REGISTER UNTUK UPDATE LOKASI

1

2

3

4

5

6

locationManager.requestLocationUpdates(

LocationManager.GPS_PROVIDER,

1000, // minimum 1 sec updates

1, // minimum 1m changes

locationListener

);

  • UNREGISTERING

Oleh karena penggunaan location akan membuat baterai device berkurang secara signifikan, aplikasi sebaiknya melakukan unregister dari location update ketika memang sudah tidak dibutuhkan.

Caranya adalah:

1 locationManager.removeUpdates(locationListener);
  • SINGLE LOCATION UPDATE

Aplikasi juga bisa hanya meminta single location update pada Android. Setelah mendapatkan single location update, fitur lokasi pada device otomatis akan dimatikan.

Caranya adalah sebagai berikut:

1

2

3

4

5

locationManager.requestSingleUpdate(

            LocationManager.GPS_PROVIDER,

            locationListener,

            Looper.myLooper()

);

 

14. ENGGUNAKAN LAST KNOWN LOCATION

Untuk mendapatkan lokasi yang fix melalui GPS akan memakan waktu yang cukup lama. Oleh karena itu, developer bisa mensiasati waktu yang lama tersebut dengan memanfaatkan last known location untuk mendapatkan lokasi terakhir yang pernah di-request oleh aplikasi Android.

Caranya adalah:

1

Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

Download file PPT disini

 

Referensi

http://supeeerblog.blogspot.co.id/2013/05/location-based-services-lbs.html

https://aryadharmaadi.com/blog/2015/11/27/pengenalan-android-location/

http://android-uinsgd.blogspot.co.id/2011/12/mengenal-konsep-location-based-service.html