Untuk menghormati privasi pengguna, sebaiknya developer aplikasi hanya meminta izin lokasi sementara. Aplikasi yang memerlukan perkiraan posisi sementara biasanya menggunakan lokasi jaringan gabungan (FLP) karena cepat dan mengonsumsi 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
requestLocationUpdates
untuk 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 yang optimal berdasarkan kriteria
permintaan lokasi dan kebijakan (daya dan akurasi) yang diperlukan oleh kendaraan.
Sebagai gantinya, Anda dapat memilih untuk meminta dan menggunakan
NETWORK_PROVIDER
serta
GPS_PROVIDER
secara eksplisit untuk
posisi yang lebih mendetail, yang menggunakan
izin
android.permission.ACCESS_FINE_LOCATION
. Di Android 12 (level API 31) dan yang lebih baru, FUSED_PROVIDER
,
yang 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 sementara saja —
framework artifisial menurunkan akurasi agar sesuai dengan ekspektasi — tidak masuk akal bagi developer yang menargetkan ponsel Android karena ketersediaan
keseluruhan buruk dan sering kali lebih lambat untuk mendapatkan posisi sementara.
Lokasi jaringan di otomotif
NETWORK_PROVIDER
yang digunakan di ponsel Android (dengan Layanan Seluler Google) menentukan lokasi berdasarkan menara seluler, titik akses Wi-Fi, dan beacon Bluetooth (BT) terdekat. Akibatnya, NETWORK_PROVIDER
mungkin memerlukan koneksi
data.
Untuk aplikasi otomotif, batasan perangkat berbeda-beda. Karena sistem satelit navigasi global (GNSS) Gthe biasanya aktif, tidak ada penalti yang timbul akibat peningkatan daya dan penggunaan baterai. Oleh karena itu, waktu beroperasi IVI tidak disusupi. Kami berusaha untuk 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 penyedia
lokasi yang paling mampu memenuhi kriteria/kebijakan permintaan lokasi (yaitu daya
dan akurasi).
Tidak seperti perangkat seluler, kendaraan jarang tampak melompat dari satu tempat ke tempat lain. Posisi kendaraan sering kali diketahui di balik kap.
Penyedia lokasi jaringan (NLP)
Sebagian besar kendaraan tidak menerapkan API telepon yang diperlukan untuk mendapatkan informasi yang diperlukan pada ID Seluler (dan kekuatan sinyal). Akibatnya, dan, karena kami meminimalkan penggunaan data, tidak ada implementasi fungsional tambahan dari NLP yang disediakan.
Penyedia lokasi gabungan
FLP seluler, selain menggunakan penyedia jaringan dan GPS dengan cerdas sesuai kebutuhan, menggabungkan informasi dari sensor lain untuk lebih meningkatkan kualitas lokasi. Di sisi lain, implementasi FLP Automotive saat ini
memanfaatkan asumsi yang disebutkan di atas dan menggunakan
GPS_PROVIDER
sebagai sumber dasar sepanjang waktu. Fitur ini memalsukan posisi dari GNSS, menambahkan beberapa error agar lebih tidak akurat saat diperlukan. Misalnya,
saat lokasi sementara diberikan kepada klien.
Dengan demikian, dalam beberapa kasus saja, mungkin ada waktu yang lebih lama dari biasanya hingga posisi pertama tersedia. 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 ini menurunkan
presisi posisi GNSS yang mendasarinya agar selaras dengan ekspektasi API. Untuk
mempelajari lebih lanjut, lihat Akurasi
di Meminta izin akses 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 memastikan kompatibilitas maksimum dengan perangkat di seluruh vertikal dan, oleh karena itu, ketersediaan aplikasi maksimum tanpa perbedaan kode untuk mendapatkan posisi saat diperlukan.