Mendapatkan lokasi sementara

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

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

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

  • API Layanan Google Play menawarkan cara yang lebih sederhana bagi Anda untuk bekerja dengan lokasi dengan diperkenalkannya Penyedia Lokasi Terpadu (FLP).

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

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

Meskipun GPS_PROVIDER hanya dapat digunakan dengan hak izin kasar, kerangka kerja ini secara artifisial menurunkan akurasi agar sesuai dengan harapan, tidak masuk akal bagi pengembang yang menargetkan ponsel Android karena ketersediaan secara keseluruhan buruk dan seringkali lebih lambat untuk mendapatkan posisi kasar.

Lokasi jaringan di otomotif

NETWORK_PROVIDER yang digunakan pada 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 suar Bluetooth (BT). Penggunaan NETWORK_PROVIDER mungkin memerlukan koneksi data.

Untuk aplikasi otomotif, batasan perangkat berbeda-beda. Karena GNSS aktif secara normal, tidak ada penalti yang dikenakan akibat peningkatan daya dan penggunaan baterai. Hasilnya, waktu aktif IVI tidak terganggu. Kami berusaha meminimalkan pertukaran data dengan server kami.

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

Berbeda dengan perangkat seluler, kendaraan jarang terlihat berpindah dari satu tempat ke tempat lain. Posisi kendaraan sering kali diketahui di bawah kap.

Penyedia lokasi jaringan

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

Penyedia lokasi menyatu

FLP seluler, selain secara cerdas menggunakan penyedia jaringan dan GPS sebagaimana mestinya, juga menggabungkan informasi dari sensor lain untuk lebih meningkatkan kualitas lokasi. Sebaliknya, penerapan FLP Otomotif saat ini memanfaatkan asumsi yang disebutkan di atas dan selalu menggunakan GPS_PROVIDER sebagai sumber yang mendasarinya. Ini memalsukan posisi dari GNSS, menambahkan beberapa kesalahan agar lebih tidak akurat bila diperlukan. Misalnya, ketika lokasi kasar diberikan kepada klien.

Oleh karena itu, dalam beberapa kasus, mungkin terdapat waktu yang lebih lama dari biasanya untuk tersedianya posisi pertama. Misalnya, saat pertama kali sebuah kendaraan atau, lebih tepatnya, subsistem lokasinya digunakan atau setelah diderek.

Rancang aplikasi untuk menargetkan penggunaan seluler dan otomotif

Sebaiknya aplikasi yang menargetkan perangkat seluler dan otomotif yang tidak memerlukan kualitas presisi lebih tinggi hanya meminta android.permission.ACCESS_COARSE_LOCATION dan kembali menggunakan FLP jika tersedia. Alternatifnya, sebagai pilihan terakhir, gunakan GPS_PROVIDER secara langsung dengan izin yang sama. Kerangka kerja ini menurunkan presisi posisi dasar GNSS agar selaras dengan ekspektasi API. Untuk mempelajari lebih lanjut, lihat Akurasi .

Selain itu, aplikasi ini harus secara eksplisit mendeklarasikan fitur android.hardware.location.network sebagai opsional dalam manifesnya. Misalnya:

<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.