Mendapatkan lokasi sementara

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.