Mały, łatwy do odczytania format zegarka sprawia, że Wear OS to idealna platforma dla aplikacji, które rejestrują, raportują i reagują na lokalizację użytkownika. Możesz na przykład tworzyć aplikacje, które dostarczają użytkownikom aktualizacje w czasie rzeczywistym dotyczące odległości, prędkości i kierunku, lub wyświetlać szybkie wskazówki dotyczące otoczenia użytkownika.
Więcej informacji znajdziesz w artykule Tworzenie aplikacji korzystających z danych o lokalizacji.
Niektóre zegarki mają wbudowany czujnik GPS, który pobiera dane o lokalizacji bez konieczności łączenia się z telefonem. Gdy aplikacja na zegarek poprosi o dane o lokalizacji, system pobierze je z telefonu lub zegarka, korzystając z najbardziej energooszczędnej metody. Dlatego nawet bez czujnika GPS w zegarku możesz uzyskać informacje o lokalizacji.
Aby zmniejszyć wpływ pozyskiwania danych o lokalizacji na czas pracy baterii, wywołaj funkcję
setPriority()
z wartością PRIORITY_BALANCED_POWER_ACCURACY
.
Różne ustawienia priorytetu mogą optymalizować działanie chipów w inny sposób.
W miarę możliwości oszczędzaj baterię, prosząc o lokalizację nie częściej niż raz na minutę za pomocą funkcji setInterval()
.
Jak opisano w dalszych sekcjach, aplikacja musi obsługiwać utratę danych o lokalizacji, gdy zegarek bez czujnika zostanie odłączony od telefonu.
Wybierz metodę
Dane o lokalizacji możesz przekazywać do aplikacji na Wear OS na 2 sposoby: za pomocą usługi lokalizacji łączonej (FLP) lub usług zdrowotnych na Wear (WHS). FLP to interfejs API usług Google Play.
Używaj FLP w tych sytuacjach:
- Chcesz mieć dane o lokalizacji w danym momencie, ale nie w sposób ciągły, np. aby oznaczyć lokalizację zaparkowanego samochodu.
- Chcesz mieć ciągły dostęp do lokalizacji, ale nie potrzebujesz historii lokalizacji.
Używaj WHS w tych sytuacjach:
- Chcesz korzystać z danych z innych czujników lub prawdopodobnie będziesz ich potrzebować w przyszłości.
- Twoja aplikacja służy do śledzenia treningów lub ćwiczeń i musi śledzić dane o lokalizacji w określonym przedziale czasu.
Korzystanie z dostawcy uśrednionej lokalizacji
Na zegarku możesz pobierać dane o lokalizacji za pomocą interfejsu FusedLocationProviderClient
. Usługa FLP może używać danych o lokalizacji z telefonu. Więcej informacji znajdziesz w artykule Tworzenie klienta usług lokalizacyjnych.
Informacje o żądaniu aktualizacji lokalizacji i ciągłym śledzeniu lokalizacji użytkownika znajdziesz w artykule Żądanie aktualizacji lokalizacji.
Wykrywanie wbudowanego GPS-a
Jeśli użytkownik idzie pobiegać z zegarkiem, który nie ma wbudowanego czujnika GPS, i zostawia sparowany telefon w domu, aplikacja na zegarku nie może pobierać danych o lokalizacji z połączonego urządzenia. Wykryj tę sytuację w aplikacji i ostrzeż użytkownika, że funkcje lokalizacji są niedostępne.
Aby sprawdzić, czy zegarek ma wbudowany czujnik GPS, wywołaj metodę
hasSystemFeature()
z parametrem
PackageManager.FEATURE_LOCATION_GPS
. Poniższy kod wykrywa, czy zegarek ma wbudowany czujnik GPS, gdy rozpoczynasz aktywność:
class LocationActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... } fun hasGps(): Boolean = packageManager.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS) }
Obsługa zdarzeń odłączenia
Jeśli zegarek nie ma wbudowanego czujnika GPS i utraci połączenie z telefonem, utraci strumień danych o lokalizacji. Jeśli aplikacja oczekuje stałego strumienia danych, musi wykrywać utratę połączenia, ostrzegać użytkownika i łagodnie ograniczać funkcjonalność.
Podobnie jak w przypadku urządzenia mobilnego, gdy prosisz o aktualizacje lokalizacji za pomocą wywołania FusedLocationProviderClient.requestLocationUpdates()
, przekazujesz LocationCallback
lub PendingIntent
. Oba zawierają informacje o lokalizacji i stan LocationAvailability
.
Jeśli używasz opcji LocationCallback
, zastąp onLocationAvailability()
, aby otrzymywać aktualizacje dotyczące stanu dostępności lokalizacji.
Jeśli używasz opcji PendingIntent
i zwracana jest wartość Intent
, wyodrębnij stan dostępności lokalizacji z elementu Intent
za pomocą metody LocationAvailability.extractLocationAvailability(Intent)
.
Nie znaleziono lokalizacji nicka
Gdy sygnał GPS zostanie utracony, możesz pobrać ostatnią znaną lokalizację zegarka użytkownika. Pobieranie ostatniej znanej lokalizacji jest przydatne, gdy nie możesz uzyskać sygnału GPS, a zegarek nie ma wbudowanego GPS-u i traci połączenie z telefonem. Więcej informacji znajdziesz w artykule Pobieranie ostatniej znanej lokalizacji.
Wysyłanie lokalizacji w pakietach wywołań
Jeśli używasz wywołań pakietowych, wywołaj flushLocations()
, gdy ekran się włączy lub gdy urządzenie wyjdzie z trybu otoczenia, aby natychmiast zwrócić wszystkie lokalizacje pakietowe do wszystkich zarejestrowanych urządzeń LocationListeners
, LocationCallbacks
i Pending Intents
.