Untuk menghormati privasi pengguna, developer aplikasi dianjurkan untuk hanya meminta informasi izin akses lokasi. Aplikasi yang memerlukan perkiraan posisi kasar biasanya menggunakan lokasi jaringan fusi (FLP) karena cepat dan mengkonsumsi daya lebih sedikit. Dibandingkan dengan perangkat seluler berbasis Android, lokasi jaringan di aplikasi otomotif bisa jadi lebih menantang. Anda dapat menggunakan dua Android API:
LocationManager API mengharuskan Anda menggunakan
requestLocationUpdates
secara eksplisit mengidentifikasi penyedia lokasi pilihan.Google Play Services API menawarkan cara yang lebih mudah untuk bekerja dengan lokasi di
FusedLocationProviderClient
Banyak aplikasi otomotif menggunakan FLP dari Google Play Services API, bukan
LocationManager
. FLP memilih penyedia lokasi yang optimal berdasarkan lokasi
kriteria dan kebijakan permintaan (daya dan akurasi) yang dibutuhkan oleh kendaraan.
Anda dapat memilih untuk secara
eksplisit meminta dan menggunakan
NETWORK_PROVIDER
dan
GPS_PROVIDER
untuk
posisi terperinci, yang menggunakan
android.permission.ACCESS_FINE_LOCATION
izin akses. Di Android 12 (level API 31) dan yang lebih tinggi,
FUSED_PROVIDER
,
sebelumnya hanya dapat diakses melalui Google Play Services API,
tersedia sebagai penyedia lokasi untuk LocationManager
. Anda dapat melihat
implementasi FLP di
FusedLocationProvider.java
Meskipun Anda dapat menggunakan GPS_PROVIDER
dengan hak izin umum saja —
framework menurunkan akurasi secara artifisial agar sesuai dengan ekspektasi — hal ini
tidak masuk akal bagi pengembang yang menargetkan ponsel Android karena secara keseluruhan
ketersediaannya buruk dan sering kali lebih lambat untuk mendapatkan perkiraan posisi.
Lokasi jaringan di otomotif
NETWORK_PROVIDER
yang digunakan di ponsel Android (dengan Layanan Seluler Google)
menentukan lokasi berdasarkan menara BTS, titik akses Wi-Fi, dan
Beacon Bluetooth (BT). Akibatnya, NETWORK_PROVIDER
mungkin memerlukan data
koneksi jarak jauh.
Untuk aplikasi otomotif, batasan perangkat berbeda. Karena navigasi global Gthe sistem satelit (GNSS) biasanya aktif, tidak ada hukuman yang dikenakan karena peningkatan daya dan penggunaan baterai. Hasilnya, waktu beroperasi IVI tidak disusupi. Kami berusaha meminimalkan pertukaran data dengan server kami.
Oleh karena itu, banyak aplikasi menggunakan FLP dari Play API, bukan LocationManager
secara langsung karena FLP otomatis melakukan hal cerdas dengan menggunakan lokasi
penyedia layanan yang paling mampu memenuhi kriteria/kebijakan permintaan lokasi (yaitu
dan akurasi).
Tidak seperti perangkat seluler, kendaraan jarang terlihat melompat dari satu tempat ke lain. Posisi kendaraan sering kali dikenal di balik kap mobil.
Penyedia lokasi jaringan (NLP)
Sebagian besar kendaraan tidak mengimplementasikan API telepon yang diperlukan untuk mendapatkan informasi yang diperlukan pada ID Sel (dan kekuatan sinyal). Akibatnya, karena kita meminimalkan data penggunaan NLP tambahan tidak disediakan.
Penyedia lokasi gabungan
FLP seluler, di samping dengan cerdas menggunakan
penyedia jaringan dan GPS sebagai
yang sesuai, menggabungkan informasi dari sensor lain untuk
kualitas lokasi. Implementasi FLP Otomotif saat ini di
pihak lain memanfaatkan asumsi yang
disebutkan di atas dan menggunakan
GPS_PROVIDER
sebagai sumber dasar sepanjang waktu. Memalsukan posisi
dari GNSS, menambahkan beberapa error agar
menjadi lebih tidak akurat saat diperlukan. Misalnya,
saat lokasi sementara diberikan kepada klien.
Dengan demikian, dalam beberapa kasus, ada waktu yang lebih lama dari biasanya untuk posisi pertama yang tersedia. Misalnya, saat pertama kali sebuah kendaraan atau, lebih tepatnya, subsistem lokasinya digunakan atau setelah ditarik.
Desain aplikasi untuk menargetkan penggunaan seluler dan otomotif
Untuk aplikasi yang menargetkan perangkat seluler dan perangkat otomotif yang tidak
memerlukan kualitas presisi yang lebih tinggi,
android.permission.ACCESS_COARSE_LOCATION
hanya dan kembali menggunakan FLP jika tersedia. Atau, gunakan
GPS_PROVIDER
secara langsung dengan izin yang sama. Kerangka kerja ini menurunkan
ketepatan posisi GNSS dasar agar selaras dengan ekspektasi API. Kepada
pelajari lebih lanjut, lihat Akurasi
di Meminta izin akses lokasi.
Selain itu, aplikasi ini harus secara eksplisit mendeklarasikan
android.hardware.location.network
sebagai opsional dalam manifesnya. Contoh:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Pendekatan ini memastikan kompatibilitas maksimum dengan perangkat di berbagai vertikal dan, oleh karena itu, ketersediaan aplikasi maksimum tanpa perbedaan kode untuk mendapatkan posisi saat dibutuhkan.