Untuk menghormati privasi pengguna, developer aplikasi dianjurkan untuk hanya meminta izin lokasi kasar. Aplikasi yang memerlukan posisi kasar perkiraan biasanya menggunakan lokasi jaringan gabungan (FLP) karena cepat dan menggunakan lebih sedikit daya. Dibandingkan dengan perangkat seluler berbasis Android, lokasi jaringan di aplikasi otomotif bisa lebih menantang. Anda dapat menggunakan dua Android API:
LocationManager API mengharuskan Anda menggunakan
requestLocationUpdatesuntuk mengidentifikasi penyedia lokasi pilihan secara eksplisit.Google Play services API menawarkan cara yang lebih mudah bagi Anda untuk menggunakan lokasi di
FusedLocationProviderClient.
Banyak aplikasi otomotif menggunakan FLP dari Google Play services API, bukan LocationManager. FLP memilih penyedia lokasi optimal berdasarkan kriteria dan kebijakan permintaan lokasi (daya dan akurasi) yang diperlukan oleh kendaraan.
Sebagai alternatif, Anda dapat memilih untuk meminta dan menggunakan NETWORK_PROVIDER
serta GPS_PROVIDER secara eksplisit untuk
posisi yang akurat, yang menggunakan izin android.permission.ACCESS_FINE_LOCATION. Di Android 12 (level API 31) dan yang lebih tinggi, FUSED_PROVIDER,
yang sebelumnya hanya dapat diakses melalui Google Play services API, tersedia
sebagai penyedia lokasi untuk LocationManager. Anda dapat melihat penerapan FLP di FusedLocationProvider.java.
Meskipun Anda dapat menggunakan GPS_PROVIDER dengan hak izin kasar saja — framework secara artifisial menurunkan akurasi agar sesuai dengan ekspektasi — hal ini tidak masuk akal bagi developer yang menargetkan ponsel Android karena ketersediaan keseluruhan buruk dan sering kali lebih lambat untuk mendapatkan posisi kasar.
Lokasi jaringan di otomotif
NETWORK_PROVIDER yang digunakan di ponsel Android (dengan Google Mobile Services) menentukan lokasi berdasarkan menara seluler terdekat, titik akses Wi-Fi, dan beacon Bluetooth (BT). Oleh karena itu, NETWORK_PROVIDER mungkin memerlukan koneksi data.
Untuk aplikasi otomotif, batasan perangkat berbeda. Karena sistem satelit navigasi global (GNSS) biasanya aktif, tidak ada penalti yang dikenakan karena peningkatan penggunaan daya dan baterai. Oleh karena itu, waktu aktif IVI tidak terganggu. Kami berupaya meminimalkan data yang ditukar dengan server kami.
Banyak aplikasi menggunakan FLP dari Play API, bukan LocationManager secara langsung karena FLP otomatis memilih penyedia lokasi terbaik untuk memenuhi kriteria atau kebijakan permintaan Anda, seperti daya dan akurasi.
Tidak seperti perangkat seluler, kendaraan jarang terlihat melompat dari satu tempat ke tempat lain. Posisi kendaraan diketahui di balik layar sebagian besar waktu.
Penyedia lokasi jaringan (NLP)
Sebagian besar kendaraan tidak menerapkan API telepon yang diperlukan untuk mendapatkan informasi yang diperlukan tentang ID Sel (dan kekuatan sinyal). Oleh karena itu, dan karena kami meminimalkan penggunaan data, tidak ada penerapan fungsi NLP tambahan yang disediakan.
Penyedia lokasi gabungan
FLP seluler menggabungkan informasi dari sensor lain untuk meningkatkan kualitas lokasi, selain menggunakan penyedia jaringan dan GPS. Sebaliknya, FLP Otomotif menggunakan GPS_PROVIDER sebagai sumber dasarnya. FLP menyesuaikan posisi GNSS, menambahkan error yang disengaja untuk menurunkan akurasi saat klien meminta lokasi kasar.
Oleh karena itu, dalam beberapa kasus, waktu yang diperlukan untuk posisi pertama tersedia bisa lebih lama dari biasanya. Misalnya, saat pertama kali kendaraan atau, lebih tepatnya, subsistem lokasinya digunakan atau setelah ditarik.
Mendesain aplikasi untuk menargetkan penggunaan seluler dan otomotif
Untuk aplikasi yang menargetkan perangkat seluler dan otomotif yang tidak
memerlukan kualitas presisi yang lebih tinggi, minta
android.permission.ACCESS_COARSE_LOCATION saja dan kembali menggunakan
FLP jika tersedia. Atau, gunakan GPS_PROVIDER secara langsung dengan izin yang sama. Framework menurunkan presisi posisi GNSS yang mendasarinya agar sesuai dengan ekspektasi API. Untuk mempelajari lebih lanjut, lihat Akurasi
di Meminta izin lokasi.
Selain itu, aplikasi ini harus secara eksplisit mendeklarasikan fitur
android.hardware.location.network sebagai opsional dalam
manifesnya. Contoh:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Pendekatan ini membantu mencapai kompatibilitas yang lebih baik dengan perangkat di berbagai faktor bentuk dan, oleh karena itu, ketersediaan aplikasi maksimum tanpa perbedaan kode untuk mendapatkan posisi saat diperlukan.