Mendapatkan perkiraan lokasi

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

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

  • LocationManager API mengharuskan Anda mengidentifikasi penyedia lokasi yang diinginkan secara eksplisit.

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

Banyak aplikasi otomotif menggunakan FLP dari API Layanan Google Play (GPS), 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 yang tepat, 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 implementasi FLP yang lebih sederhana, di FusedLocationProvider.java.

Meskipun Anda dapat menggunakan GPS_PROVIDER hanya dengan hak izin kasar, framework ini secara artifisial menurunkan akurasi agar sesuai dengan ekspektasi, yang 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 Layanan Seluler Google) telah berubah dari menentukan lokasi hanya berdasarkan menara seluler di sekitar 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 daya dan penggunaan baterai. Akibatnya, waktu beroperasi IVI tidak akan 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 otomatis melakukan tindakan 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 melompat dari satu tempat ke tempat lain. Posisi kendaraan biasanya diketahui di balik layar.

Penyedia lokasi jaringan

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

Penyedia lokasi gabungan

FLP seluler, selain menggunakan penyedia jaringan dan GPS secara 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 yang mendasarinya sepanjang waktu. Hal ini mengaburkan posisi dari GNSS, menambahkan beberapa error agar lebih tidak akurat saat diperlukan. Misalnya, saat lokasi kasar diberikan kepada klien.

Dengan demikian, dalam beberapa kasus, mungkin perlu waktu lebih lama dari biasanya agar posisi pertama tersedia. Misalnya, saat pertama kali kendaraan atau, agar lebih akurat, 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 saja dan kembali menggunakan FLP jika tersedia. Atau, sebagai upaya terakhir, 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.

Selain itu, aplikasi ini harus mendeklarasikan fitur android.hardware.location.network secara eksplisit 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, sehingga ketersediaan aplikasi maksimum tanpa perbedaan kode untuk mendapatkan posisi saat diperlukan.