Mengoptimalkan penggunaan lokasi untuk skenario dunia nyata

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.