Mendapatkan lokasi sementara

Untuk menghormati privasi pengguna, sebaiknya developer aplikasi hanya meminta izin lokasi sementara. Aplikasi yang memerlukan perkiraan posisi sementara 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 menantang. 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 permintaan lokasi dan kebijakan (daya dan akurasi) yang diperlukan oleh kendaraan.

Sebagai gantinya, Anda dapat memilih untuk meminta dan menggunakan NETWORK_PROVIDER serta GPS_PROVIDER secara eksplisit untuk posisi yang lebih mendetail, yang menggunakan izin android.permission.ACCESS_FINE_LOCATION. Di Android 12 (level API 31) dan yang lebih baru, FUSED_PROVIDER, yang 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 sementara saja — framework artifisial menurunkan akurasi agar sesuai dengan ekspektasi — tidak masuk akal bagi developer yang menargetkan ponsel Android karena ketersediaan keseluruhan buruk dan sering kali lebih lambat untuk mendapatkan posisi sementara.

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) terdekat. Akibatnya, NETWORK_PROVIDER mungkin memerlukan koneksi data.

Untuk aplikasi otomotif, batasan perangkat berbeda-beda. Karena sistem satelit navigasi global (GNSS) Gthe biasanya aktif, tidak ada penalti yang timbul akibat peningkatan daya dan penggunaan baterai. Oleh karena itu, waktu beroperasi IVI tidak disusupi. Kami berusaha untuk 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 penyedia lokasi yang paling mampu memenuhi kriteria/kebijakan permintaan lokasi (yaitu daya dan akurasi).

Tidak seperti perangkat seluler, kendaraan jarang tampak melompat dari satu tempat ke tempat lain. Posisi kendaraan sering kali diketahui di balik kap.

Penyedia lokasi jaringan (NLP)

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

Penyedia lokasi gabungan

FLP seluler, selain menggunakan penyedia jaringan dan GPS dengan 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 dasar sepanjang waktu. Fitur ini memalsukan posisi dari GNSS, menambahkan beberapa error agar lebih tidak akurat saat diperlukan. Misalnya, saat lokasi sementara diberikan kepada klien.

Dengan demikian, dalam beberapa kasus saja, mungkin ada waktu yang lebih lama dari biasanya hingga 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 kualitas 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 ini menurunkan presisi posisi GNSS yang mendasarinya agar selaras 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 memastikan kompatibilitas maksimum dengan perangkat di seluruh vertikal dan, oleh karena itu, ketersediaan aplikasi maksimum tanpa perbedaan kode untuk mendapatkan posisi saat diperlukan.