Niewielki, dobrze widoczny format zegarka sprawia, że Wear OS stanowi idealną platformę dla aplikacji, które rejestrują i raportują lokalizację użytkownika oraz na nie reagują. Możesz na przykład tworzyć aplikacje, które w czasie rzeczywistym przekazują użytkownikom aktualne informacje o odległości, szybkości i kierunku ruchu lub przekazują czytelne wskazówki na temat otoczenia.
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 lokalizacyjne bez konieczności podłączenia telefonu. Gdy prosisz o dostęp do danych o lokalizacji w aplikacji na zegarek, system pobiera lokalizację z telefonu lub zegarka przy użyciu najbardziej energooszczędnej metody. Dzięki temu nawet bez czujnika GPS w zegarku możesz uzyskać informacje o lokalizacji.
Aby zmniejszyć wpływ pozyskiwania danych o lokalizacji na czas pracy na baterii, wywołaj setPriority()
, podając wartość PRIORITY_BALANCED_POWER_ACCURACY
.
Różne ustawienia priorytetu mogą w różny sposób optymalizować elementy.
Jeśli to możliwe, oszczędzaj baterię, pytając o lokalizację nie częściej niż raz na minutę za pomocą setInterval()
.
Jak opisujemy w kolejnych sekcjach, aplikacja musi poradzić sobie z utratą danych o lokalizacji, gdy zegarek bez czujnika zostanie rozłączony z telefonem.
Wybierz metodę
Możesz przekazać dane o lokalizacji do aplikacji na Wear OS na kilka sposobów. Możesz skorzystać z usług dostawcy uśrednionej lokalizacji (FLP) lub Wear Health Services (WHS). FLP to interfejs API Usług Google Play.
Używaj FLP w następujących przypadkach:
- Chcesz, aby dane o lokalizacji były zbierane na bieżąco, ale nie w sposób ciągły – na przykład oznaczać lokalizację zaparkowanego samochodu.
- Chcesz mieć ciągłą lokalizację, ale nie potrzebujesz historii lokalizacji.
Używaj WHS w następujących sytuacjach:
- Chcesz otrzymywać w przyszłości dane z innych czujników lub też dane pochodzące z innych czujników.
- Twoja aplikacja jest aplikacją do treningu lub ćwiczeń, która musi śledzić dane o lokalizacji w określonym przedziale czasu.
Informacje o zegarkach sparowanych z iPhone'ami znajdziesz w sekcji Dane o lokalizacji w przypadku zegarków sparowanych z iPhone'ami.
Użyj dostawcy uśrednionej lokalizacji
Na zegarku dane o lokalizacji możesz znaleźć za pomocą funkcji FusedLocationProviderClient
.
FLP może używać danych o lokalizacji z telefonu. Więcej informacji znajdziesz w artykule Tworzenie klienta usług lokalizacyjnych.
Informacje o przesyłaniu próśb o aktualizację lokalizacji i ciągłym śledzeniu lokalizacji użytkownika znajdziesz w artykule Wysyłanie prośby o aktualizację lokalizacji.
Wykrywanie wbudowanego modułu GPS
Jeśli użytkownik wybierze bieganie z zegarkiem bez wbudowanego czujnika GPS, który zostawi w domu sparowany telefon, aplikacja na zegarek nie będzie mogła pobrać z niego danych o lokalizacji. Wykryj taką sytuację w aplikacji i ostrzegj użytkownika, że funkcje związane z lokalizacją są niedostępne.
Aby określić, czy zegarek ma wbudowany czujnik GPS, wywołaj metodę hasSystemFeature()
za pomocą metody PackageManager.FEATURE_LOCATION_GPS
.
Ten kod wykrywa, czy zegarek ma wbudowany czujnik GPS, gdy zaczynasz aktywność.
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); }
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 wymaga stałego strumienia danych, musi wykryć utratę połączenia, ostrzegać użytkownika i delikatnie obniżyć jego funkcjonalność.
Podobnie jak w przypadku urządzenia mobilnego, gdy prosisz o aktualizację lokalizacji za pomocą FusedLocationProviderClient.requestLocationUpdates()
, musisz przekazać LocationCallback
lub PendingIntent
.
Oba te rodzaje danych obejmują informacje o lokalizacji i stan LocationAvailability
.
Jeśli korzystasz z opcji LocationCallback
, zastąp onLocationAvailability()
, aby otrzymywać informacje o stanie dostępności lokalizacji.
Jeśli używasz opcji PendingIntent
i zwracany jest obiekt Intent
, wyodrębnij stan dostępności lokalizacji z parametru Intent
za pomocą metody LocationAvailability.extractLocationAvailability(Intent)
.
Nie znaleziono lokalizacji nicków
W przypadku utraty sygnału GPS możesz pobrać ostatnią znaną lokalizację zegarka użytkownika. Odzyskanie ostatniej znanej lokalizacji jest przydatne, gdy nie można naprawić GPS lub gdy zegarek nie ma wbudowanego GPS-a i traci połączenie z telefonem. Więcej informacji znajdziesz w sekcji Uzyskiwanie ostatniej znanej lokalizacji.
Czyszczenie lokalizacji z wywołaniami grupowymi
Jeśli korzystasz z połączeń grupowych, wywołaj metodę flushLocations()
po wznowieniu ekranu lub powrocie z trybu nieaktywnego, aby natychmiast zwrócić wszystkie zbiorcze lokalizacje do wszystkich zarejestrowanych lokalizacji LocationListeners
, LocationCallbacks
i Pending Intents
.
Polecane dla Ciebie
- Uwaga: tekst linku jest wyświetlany, gdy JavaScript jest wyłączony
- Bieżące działania