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.
- 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: workforce, fleet management. Family Locator, Personal Asset Tracking
- Contoh: Direction, Planning, Assistance
- Contoh: Road Tolling, Parking
- 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):
- 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.
- 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.
- 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