Mendapatkan perkiraan lokasi

Untuk menghormati privasi pengguna, developer aplikasi dianjurkan untuk hanya meminta izin akses lokasi kasar. Aplikasi yang memerlukan posisi kasar perkiraan biasanya menggunakan lokasi jaringan (FLP) karena cepat dan mengonsumsi lebih sedikit daya.

Dibandingkan dengan perangkat seluler berbasis Android, lokasi jaringan di aplikasi otomotif bisa lebih sulit. Anda dapat menggunakan dua Android API:

  • LocationManager API atau LM mengharuskan Anda mengidentifikasi penyedia lokasi pilihan secara eksplisit.

  • Google Play Services API menawarkan cara yang lebih sederhana bagi Anda untuk bekerja dengan lokasi melalui pengenalan Fused Location Provider (FLP).

Banyak aplikasi otomotif menggunakan FLP dari API Layanan Google Play (GPS) dan bukan LM. FLP memilih penyedia lokasi yang optimal berdasarkan kriteria dan kebijakan permintaan lokasi (daya dan akurasi) yang diperlukan oleh kendaraan.

Sebagai gantinya, Anda dapat memilih untuk meminta dan menggunakan NETWORK_PROVIDER secara eksplisit di LM, serta GPS_PROVIDER untuk posisi akurat, yang menggunakan izin android.permission.ACCESS_FINE_LOCATION. Di API 31, FUSED_PROVIDER, yang sebelumnya hanya dapat diakses melalui GPS API, kini tersedia sebagai penyedia lokasi untuk LM. Anda dapat melihat penerapan FLP yang lebih sederhana di FusedLocationProvider.java.

Meskipun GPS_PROVIDER dapat digunakan dengan hak izin kasar saja, framework menurunkan akurasi secara buatan agar sesuai dengan ekspektasi. Hal ini kurang masuk akal bagi developer yang menargetkan ponsel Android karena ketersediaan secara keseluruhan buruk dan sering kali lebih lambat untuk mendapatkan posisi kasar.

Lokasi jaringan di otomotif

NETWORK_PROVIDER yang digunakan di ponsel Android (dengan Layanan Seluler Google) telah berubah dari menentukan lokasi hanya berdasarkan menara seluler terdekat menjadi juga menggunakan titik akses Wi-Fi atau bahkan beacon Bluetooth (BT). Penggunaan NETWORK_PROVIDER mungkin memerlukan koneksi data.

Untuk aplikasi otomotif, batasan perangkat berbeda. Karena GNSS biasanya aktif, tidak ada penalti yang dikenakan karena peningkatan penggunaan daya dan baterai. Akibatnya, waktu beroperasi IVI tidak terganggu. Kami berupaya meminimalkan data yang dipertukarkan dengan server kami.

Oleh karena itu, banyak aplikasi menggunakan FLP dari Play API, bukan LM secara langsung karena FLP secara otomatis melakukan hal yang cerdas dengan menggunakan penyedia lokasi yang paling mampu memenuhi kriteria/kebijakan permintaan lokasi (yaitu daya dan akurasi) di balik layar.

Tidak seperti perangkat seluler, kendaraan jarang terlihat berpindah dari satu tempat ke tempat lain. Posisi kendaraan diketahui di balik layar hampir sepanjang waktu.

Penyedia lokasi jaringan

Sebagian besar kendaraan tidak menerapkan API telepon yang diperlukan untuk mendapatkan informasi yang diperlukan tentang ID Sel (dan kekuatan sinyal). Akibatnya, dan karena kami meminimalkan penggunaan data, tidak ada penerapan fungsional tambahan NLP yang disediakan.

Penyedia lokasi gabungan

FLP seluler, selain menggunakan penyedia jaringan dan GPS secara cerdas sebagaimana mestinya, 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 pokok setiap saat. Fitur ini memalsukan posisi dari GNSS, menambahkan beberapa error agar lebih tidak akurat jika diperlukan. Misalnya, saat lokasi kasar diberikan kepada klien.

Oleh karena itu, dalam beberapa kasus yang sangat jarang terjadi, posisi pertama mungkin memerlukan waktu lebih lama dari biasanya untuk tersedia. Misalnya, saat kendaraan digunakan untuk pertama kalinya atau, lebih tepatnya, subsistem lokasinya digunakan atau setelah ditarik.

Mendesain aplikasi untuk menargetkan penggunaan seluler dan otomotif

Sebaiknya aplikasi yang menargetkan perangkat seluler dan otomotif yang tidak memerlukan permintaan presisi berkualitas lebih tinggi android.permission.ACCESS_COARSE_LOCATION hanya dan melakukan penggantian ke penggunaan FLP jika tersedia. Atau, sebagai upaya terakhir, 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.

Selain itu, aplikasi ini harus secara eksplisit mendeklarasikan fitur android.hardware.location.network 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 jika diperlukan.