Dengan location API layanan Google Play, aplikasi Anda dapat meminta lokasi terakhir yang diketahui dari perangkat pengguna. Dalam sebagian besar kasus, Anda ingin mengetahui lokasi pengguna saat ini, yang biasanya setara dengan lokasi perangkat yang terakhir diketahui.
Secara khusus, gunakan penyedia lokasi gabungan untuk mengambil lokasi terakhir perangkat yang diketahui. Penyedia lokasi fusi adalah salah satu location API di layanan Google Play. API tersebut mengelola teknologi lokasi yang mendasarinya dan memberikan API sederhana sehingga Anda dapat menentukan persyaratan tingkat tinggi, seperti akurasi tinggi atau penggunaan daya rendah. API tersebut juga mengoptimalkan penggunaan daya baterai perangkat.
Catatan: Saat aplikasi berjalan di latar belakang, akses ke lokasi harus diwajibkan untuk fungsi inti aplikasi dan disertai pengungkapan yang tepat kepada pengguna.
Tutorial ini menunjukkan kepada Anda cara membuat permintaan tunggal untuk lokasi perangkat menggunakan metode getLastLocation()
di penyedia lokasi gabungan.
Menyiapkan layanan Google Play
Untuk mengakses penyedia lokasi gabungan, project pengembangan aplikasi Anda harus menyertakan layanan Google Play. Download dan instal komponen layanan Google Play melalui SDK Manager dan tambahkan library ke project Anda. Untuk detailnya, lihat panduan dalam Menyiapkan Layanan Google Play.
Menentukan izin aplikasi
Aplikasi yang fiturnya menggunakan layanan lokasi harus meminta izin akses lokasi, bergantung pada kasus penggunaan fitur tersebut.
Membuat klien layanan lokasi
Dalam metode onCreate()
aktivitas Anda, buat sebuah instance dari Klien Penyedia Lokasi Fusi seperti yang ditampilkan dalam cuplikan kode berikut.
Kotlin
private lateinit var fusedLocationClient: FusedLocationProviderClient override fun onCreate(savedInstanceState: Bundle?) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) }
Java
private FusedLocationProviderClient fusedLocationClient; // .. @Override protected void onCreate(Bundle savedInstanceState) { // ... fusedLocationClient = LocationServices.getFusedLocationProviderClient(this); }
Mendapatkan lokasi terakhir yang diketahui
Setelah Anda membuat klien Layanan Lokasi, Anda bisa mendapatkan lokasi terakhir yang diketahui dari perangkat pengguna. Saat aplikasi Anda terhubung dengannya, Anda dapat menggunakan metode getLastLocation()
penyedia lokasi fusi untuk mengambil lokasi perangkat. Akurasi lokasi yang ditampilkan oleh panggilan ini ditentukan berdasarkan setelan izin yang Anda masukkan dalam manifes aplikasi Anda, seperti dijelaskan dalam panduan tentang cara meminta izin akses lokasi.
Untuk meminta lokasi terakhir yang diketahui, panggil metode getLastLocation()
. Cuplikan kode berikut mengilustrasikan permintaan dan penanganan respons yang sederhana:
Kotlin
fusedLocationClient.lastLocation .addOnSuccessListener { location : Location? -> // Got last known location. In some rare situations this can be null. }
Java
fusedLocationClient.getLastLocation() .addOnSuccessListener(this, new OnSuccessListener<Location>() { @Override public void onSuccess(Location location) { // Got last known location. In some rare situations this can be null. if (location != null) { // Logic to handle location object } } });
Metode getLastLocation()
menampilkan Task
yang dapat Anda gunakan untuk mendapatkan objek Location
dengan koordinat lintang dan bujur lokasi geografis. Objek lokasi mungkin menjadi null
dalam situasi berikut:
- Lokasi dinonaktifkan pada setelan perangkat. Hasilnya dapat menjadi
null
bahkan jika lokasi terakhir sebelumnya sudah diambil karena menonaktifkan lokasi juga akan membersihkan cache. - Perangkat tidak pernah mencatat lokasinya, yang mungkin merupakan kasus perangkat baru atau perangkat yang telah dipulihkan ke setelan pabrik.
- Layanan Google Play pada perangkat telah dimulai ulang, dan tidak ada klien Penyedia Lokasi Gabungan aktif yang meminta lokasi setelah layanan dimulai ulang. Untuk menghindari situasi tersebut, Anda dapat membuat klien baru dan meminta pembaruan lokasi sendiri. Untuk informasi selengkapnya, lihat Menerima Pembaruan Lokasi.
Memilih perkiraan lokasi terbaik
FusedLocationProviderClient
menyediakan beberapa metode untuk mengambil informasi
lokasi perangkat. Pilih salah satu dari metode berikut, bergantung pada kasus penggunaan
aplikasi Anda:
getLastLocation()
mendapatkan perkiraan lokasi lebih cepat dan meminimalkan penggunaan baterai yang dapat dikaitkan dengan aplikasi Anda. Namun, informasi lokasi mungkin sudah tidak berlaku jika tidak ada klien lain yang secara aktif menggunakan lokasi baru-baru ini.getCurrentLocation()
mendapatkan lokasi yang lebih baru dan lebih akurat dengan cara yang lebih konsisten. Namun, metode ini dapat menyebabkan komputasi lokasi aktif terjadi di perangkatIni adalah cara yang direkomendasikan untuk mendapatkan lokasi baru, jika memungkinkan, dan lebih aman daripada alternatif seperti memulai dan mengelola sendiri pembaruan lokasi menggunakan
requestLocationUpdates()
. Saat aplikasi Anda memanggilrequestLocationUpdates()
, aplikasi terkadang dapat menghabiskan sejumlah besar daya jika lokasi tidak tersedia, atau jika permintaan tidak dihentikan dengan benar setelah mendapatkan lokasi baru.
Referensi lainnya
Untuk informasi selengkapnya tentang mengambil lokasi saat ini di Android, lihat materi berikut:
Contoh
- Aplikasi contoh untuk mendemonstrasikan praktik terbaik saat mengambil lokasi saat ini.