Bagian ini menjelaskan beberapa skenario pengumpulan lokasi umumnya, beserta rekomendasi untuk penggunaan API penyedia lokasi gabungan dan pembatasan wilayah yang optimal.
Update latar depan atau terlihat pengguna
Contoh: Aplikasi pemetaan yang membutuhkan update yang sering dan akurat dengan latensi yang sangat rendah. Semua update terjadi di latar depan: pengguna memulai aktivitas, menggunakan data lokasi, kemudian menghentikan aktivitas setelah beberapa saat.
Gunakan metode setPriority()
dengan nilai
PRIORITY_HIGH_ACCURACY
atau PRIORITY_BALANCED_POWER_ACCURACY
.
Interval yang ditetapkan dalam metode setInterval()
bergantung pada kasus
penggunaan: untuk skenario real time, setel nilai menjadi beberapa detik; jika tidak, batasi hingga
beberapa menit (disarankan dua menit atau lebih untuk meminimalkan
penggunaan baterai).
Mengetahui lokasi perangkat
Contoh: Aplikasi cuaca ingin mengetahui lokasi perangkat.
Gunakan metode getLastLocation()
, yang menampilkan lokasi terbaru
yang tersedia (dalam kasus yang jarang terjadi dapat berupa null). Metode ini memberikan
cara mudah untuk mendapatkan lokasi dan tidak mengeluarkan biaya yang terkait dengan
permintaan update lokasi secara aktif. Gunakan bersama dengan metode
isLocationAvailable()
, yang menampilkan true
saat lokasi
yang ditampilkan oleh getLastLocation()
cukup mutakhir.
Memulai update saat pengguna berada di lokasi tertentu
Contoh: Meminta update saat pengguna berada dalam jarak kerja tertentu, rumah, atau lokasi lain.
Gunakan pembatasan wilayah bersama update penyedia lokasi gabungan. Minta update saat aplikasi menerima pemicu masuk pembatasan wilayah, dan hapus update saat aplikasi menerima pemicu keluar pembatasan wilayah. Hal ini memastikan bahwa aplikasi mendapatkan lebih banyak update lokasi terperinci saat pengguna telah memasuki area yang ditentukan.
Alur kerja umum untuk skenario ini dapat meliputi memunculkan notifikasi setelah transisi masuk pembatasan wilayah, dan meluncurkan aktivitas yang berisi kode untuk meminta update saat pengguna mengetuk notifikasi.
Memulai update berdasarkan status aktivitas pengguna
Contoh: Meminta update hanya saat pengguna mengemudi atau mengendarai sepeda.
Gunakan Activity Recognition API bersama dengan update penyedia lokasi gabungan. Minta update saat aktivitas yang ditargetkan terdeteksi, dan hapus update saat pengguna berhenti melakukan aktivitas tersebut.
Alur kerja umum untuk kasus penggunaan ini dapat meliputi memunculkan notifikasi untuk aktivitas yang terdeteksi, dan meluncurkan aktivitas yang berisi kode untuk meminta update saat pengguna mengetuk notifikasi.
Update lokasi latar belakang yang berjalan lama yang terkait dengan area geografis
Contoh: Pengguna ingin diberi tahu saat perangkat berada dalam jarak dekat dengan pedagang retail.
Ini adalah kasus penggunaan yang bagus untuk pembatasan wilayah. Karena kasus penggunaan hampir
pasti melibatkan lokasi latar belakang, gunakan
metode addGeofences(GeofencingRequest, PendingIntent)
.
Anda harus menyetel opsi konfigurasi berikut:
Jika Anda melacak transisi diam, gunakan metode
setLoiteringDelay()
yang meneruskan nilai sekitar lima menit atau kurang.Gunakan
setNotificationResponsiveness()
, yang meneruskan nilai sekitar lima menit. Namun, pertimbangkan untuk menggunakan nilai sekitar sepuluh menit jika aplikasi Anda dapat mengelola penundaan ekstra dalam respons.
Suatu aplikasi hanya dapat mendaftarkan maksimal 100 pembatasan wilayah dalam satu waktu. Dalam kasus penggunaan dengan aplikasi yang ingin melacak sejumlah besar opsi retailer, aplikasi tersebut mungkin ingin mendaftarkan pembatasan wilayah yang lebih besar (pada level kota) dan secara dinamis mendaftarkan pembatasan wilayah yang lebih kecil (untuk lokasi di dalam kota) untuk toko dalam pembatasan wilayah yang lebih besar. Saat pengguna memasuki pembatasan wilayah yang lebih besar, tambahkan pembatasan wilayah yang lebih kecil; saat pengguna keluar dari pembatasan wilayah yang lebih besar, hapus pembatasan wilayah yang lebih kecil dan daftarkan ulang pembatasan wilayah untuk area baru.
Update lokasi latar belakang yang berjalan lama tanpa komponen aplikasi yang terlihat
Contoh: Aplikasi yang melacak lokasi secara pasif
Gunakan metode setPriority()
dengan opsi PRIORITY_NO_POWER
jika
memungkinkan karena hal itu hampir tidak menyebabkan pengurasan baterai. Jika menggunakan PRIORITY_NO_POWER
tidak memungkinkan, gunakan PRIORITY_BALANCED_POWER_ACCURACY
atau
PRIORITY_LOW_POWER
, tetapi hindari penggunaan PRIORITY_HIGH_ACCURACY
untuk
pekerjaan latar belakang yang berkelanjutan karena opsi ini secara substansial akan menguras baterai.
Jika Anda memerlukan lebih banyak data lokasi, gunakan lokasi pasif dengan memanggil metode
setFastestInterval()
yang meneruskan nilai yang lebih kecil dari nilai yang Anda teruskan
ke setInterval()
. Jika digabungkan dengan opsi PRIORITY_NO_POWER
, lokasi pasif dapat secara oportunistik mengirim lokasi yang dihitung oleh
aplikasi lain tanpa biaya tambahan.
Moderasi frekuensi dengan menambahkan beberapa latensi, menggunakan metode
setMaxWaitTime()
. Misalnya, jika Anda menggunakan metode setinterval()
dengan nilai
sekitar 10 menit, sebaiknya pertimbangkan memanggil setMaxWaitTime()
dengan
nilai antara 30 hingga 60 menit. Dengan menggunakan opsi ini, lokasi dihitung untuk
aplikasi Anda sekitar 10 menit, tetapi aplikasi hanya diaktifkan setiap 30
hingga 60 menit dengan beberapa data lokasi yang tersedia sebagai update batch. Pendekatan ini
mengorbankan latensi agar data yang tersedia lebih banyak dan kinerja baterai lebih baik.
Update dengan akurasi tinggi dan berulang saat pengguna berinteraksi dengan aplikasi lain
Contoh: Aplikasi kebugaran atau navigasi yang terus berfungsi saat pengguna menonaktifkan layar atau membuka aplikasi lain.
Gunakan layanan latar depan. Jika pekerjaan berat berpotensi dilakukan aplikasi Anda atas nama pengguna, membuat pengguna sadar atas pekerjaan tersebut adalah praktik terbaik yang disarankan. Layanan latar depan memerlukan notifikasi persisten. Untuk informasi selengkapnya, lihat Ringkasan Notifikasi.