Faktor bentuk smartwatch yang kecil dan mudah dilihat membuat Wear OS menjadi platform ideal untuk aplikasi yang merekam, melaporkan, dan merespons lokasi pengguna. Contohnya, Anda dapat mem-build aplikasi yang memberikan info real-time kepada pengguna mengenai jarak, kecepatan, dan arah, atau memberikan informasi yang mudah dilihat mengenai area di sekitar pengguna.
Untuk informasi selengkapnya, lihat Membuat aplikasi yang mampu menentukan lokasi.
Beberapa smartwatch dilengkapi sensor GPS bawaan yang dapat mengambil data lokasi tanpa perlu ponsel yang terhubung. Saat Anda meminta data lokasi di aplikasi smartwatch, sistem akan mengambil lokasi dari ponsel atau smartwatch menggunakan metode yang paling hemat daya. Jadi, meskipun tanpa sensor GPS di smartwatch, Anda masih bisa mendapatkan informasi lokasi.
Untuk mengurangi efek akuisisi data lokasi terhadap masa pakai baterai,
panggil
setPriority()
dengan nilai
PRIORITY_BALANCED_POWER_ACCURACY
.
Setelan prioritas yang berbeda dapat
mengoptimalkan chip secara berbeda.
Jika memungkinkan, hemat baterai dengan meminta lokasi tidak lebih
dari sekali per menit menggunakan
setInterval()
.
Seperti yang dijelaskan di bagian berikut, aplikasi Anda perlu menangani hilangnya data lokasi saat smartwatch tanpa sensor terputus dari ponsel.
Memilih metode
Ada beberapa cara untuk memberikan data lokasi ke aplikasi Wear OS. Anda dapat menggunakan Penyedia Lokasi Gabungan (FLP) atau Fitur Kesehatan Wear (WHS). FLP adalah API layanan Google Play.
Gunakan FLP dalam keadaan berikut:
- Anda menginginkan data lokasi pada saat itu, tetapi tidak berkelanjutan, seperti menandai lokasi mobil yang diparkir.
- Anda ingin menggunakan lokasi secara terus-menerus, tetapi tidak memerlukan histori lokasi.
Gunakan WHS dalam keadaan berikut:
- Anda menginginkan data dari sensor lain atau mungkin menginginkan data dari sensor lain di masa mendatang.
- Aplikasi Anda adalah aplikasi olahraga atau latihan yang perlu melacak data lokasi selama interval waktu tertentu.
Untuk smartwatch yang tersambung dengan iPhone, lihat Data lokasi untuk smartwatch yang disambungkan ke iPhone.
Menggunakan Penyedia Lokasi Gabungan
Di smartwatch, dapatkan data lokasi menggunakan
FusedLocationProviderClient
.
FLP dapat menggunakan data lokasi dari ponsel. Untuk mengetahui informasi selengkapnya, lihat
Membuat klien layanan lokasi.
Untuk informasi tentang cara meminta pembaruan lokasi dan terus melacak lokasi pengguna, lihat Meminta pembaruan lokasi.
Mendeteksi GPS internal
Jika pengguna melakukan joging dengan smartwatch yang tidak dilengkapi sensor GPS bawaan dan tidak membawa ponsel yang disambungkan, aplikasi smartwatch tidak dapat memperoleh data lokasi melalui perangkat terhubung. Deteksi situasi ini di aplikasi Anda dan peringatkan pengguna bahwa kemampuan lokasi tidak tersedia.
Untuk menentukan apakah smartwatch memiliki sensor GPS bawaan, panggil
metode hasSystemFeature()
dengan
PackageManager.FEATURE_LOCATION_GPS
.
Kode berikut mendeteksi apakah smartwatch dilengkapi sensor GPS bawaan saat Anda memulai suatu aktivitas:
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) if (!hasGps()) { Log.d(TAG, "This hardware doesn't have GPS.") // Fall back to functionality that doesn't use location or // warn the user that location function isn't available. } } private fun hasGps(): Boolean = packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS)
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); if (!hasGps()) { Log.d(TAG, "This hardware doesn't have GPS."); // Fall back to functionality that doesn't use location or // warn the user that location function isn't available. } ... } private boolean hasGps() { return getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS); }
Menangani peristiwa sambungan terputus
Jika smartwatch tidak dilengkapi sensor GPS bawaan dan tidak terhubung ke ponsel, smartwatch akan kehilangan aliran data lokasinya. Jika menginginkan streaming data yang stabil, aplikasi Anda harus mendeteksi terputusnya koneksi, memperingatkan pengguna, dan menurunkan fungsionalitas secara halus.
Seperti pada perangkat seluler, saat Anda meminta pembaruan lokasi menggunakan
FusedLocationProviderClient.requestLocationUpdates()
, Anda meneruskan
LocationCallback
atau
PendingIntent
.
Keduanya menyertakan informasi lokasi dan
status
LocationAvailability
.
Saat menggunakan opsi LocationCallback
, ganti
onLocationAvailability()
untuk menerima info terbaru terkait status ketersediaan lokasi.
Saat menggunakan opsi PendingIntent
dan
Intent
ditampilkan, ekstrak status ketersediaan
lokasi dari Intent
menggunakan
metode
LocationAvailability.extractLocationAvailability(Intent)
.
Menangani lokasi tidak ditemukan
Ketika sinyal GPS hilang, Anda bisa mendapatkan kembali lokasi terakhir yang diketahui dari smartwatch pengguna. Mendapatkan kembali lokasi terakhir yang diketahui sangat membantu ketika Anda tidak bisa mendapatkan sinyal GPS, juga ketika smartwatch tidak dilengkapi GPS bawaan dan kehilangan koneksi dengan ponsel. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan lokasi terakhir yang diketahui.
Menghapus lokasi dengan panggilan batch
Jika Anda menggunakan panggilan batch, panggil
flushLocations()
saat layar kembali aktif atau kembali dari mode standby untuk
segera menampilkan lokasi batch apa pun ke semua LocationListeners
,
LocationCallbacks
, dan Pending Intents
yang terdaftar.
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Mengoptimalkan lokasi untuk baterai
- Buat notifikasi {:#notification}
- Mendeteksi kapan pengguna memulai atau mengakhiri aktivitas