Lokasi kasar di Android Automotive OS

Untuk menghormati privasi pengguna, developer aplikasi dianjurkan untuk hanya meminta izin akses lokasi kasar. Aplikasi yang memerlukan posisi kasar perkiraan 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 sulit. 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 dan kebijakan permintaan lokasi (daya dan akurasi) yang dibutuhkan oleh kendaraan.

Sebagai gantinya, Anda dapat memilih untuk meminta dan menggunakan NETWORK_PROVIDER secara eksplisit serta GPS_PROVIDER untuk posisi 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 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) menentukan lokasi berdasarkan menara seluler, titik akses Wi-Fi, dan beacon Bluetooth (BT) di sekitar. Akibatnya, 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. Akibatnya, waktu aktif IVI tidak terganggu. Kami berupaya meminimalkan data yang dipertukarkan dengan server kami.

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

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 (NLP)

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. Implementasi FLP Automotive saat ini, di sisi lain, 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, mungkin perlu waktu lebih lama dari biasanya agar 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 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 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 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.