Za pomocą interfejsów API lokalizacyjnych Usług Google Play aplikacja może prosić o ostatnie znanej lokalizacji urządzenia użytkownika. W większości przypadków interesuje Cię, bieżącej lokalizacji użytkownika. Jest to zwykle odpowiednik ostatniej znanej lokalizacji lokalizację urządzenia.
W szczególności użyj parametru połączone dostawcy lokalizacji, aby pobrać ostatnią znaną lokalizację urządzenia. Połączony dostawca lokalizacji to jeden z interfejsów API lokalizacji w Usługach Google Play. it zarządza podstawową technologią lokalizacji i udostępnia prosty interfejs API, możesz określać wymagania na wysokim poziomie, np. wysoka dokładność lub mała moc. Optymalizuje też wykorzystanie baterii przez urządzenie.
Uwaga: jeśli aplikacja działa w tle, dostęp do lokalizacji powinien być jest kluczowe dla głównej funkcjonalności aplikacji i zawiera odpowiednie i ujawnianie informacji użytkownikom.
Z tej lekcji dowiesz się, jak przesłać pojedynczą prośbę dotyczącą lokalizacji
urządzenia za pomocą
getLastLocation()
u dostawcy uśrednionej lokalizacji.
Konfigurowanie Usług Google Play
Aby można było uzyskać dostęp do dostawcy uśrednionej lokalizacji, projekt programisty aplikacji musi obejmują Usługi Google Play. Pobieranie i instalowanie Usług Google Play za pomocą pakietu SDK. Menedżera i dodaj bibliotekę do projektu. Szczegółowe informacje znajdziesz w przewodniku Konfigurowanie Google Play Usługi.
Określanie uprawnień aplikacji
Aplikacje, które korzystają z usług lokalizacyjnych, muszą poprosić o dostęp do lokalizacji, w zależności od przypadku użycia tych funkcji.
Utwórz klienta usług lokalizacyjnych
W metodzie onCreate()
Twojej aktywności
utwórz instancję klienta dostawcy uśrednionej lokalizacji zgodnie z podanym niżej fragmentem kodu.
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); }
Pobierz ostatnią znaną lokalizację
Po utworzeniu klienta usług lokalizacyjnych
możesz sprawdzić ostatnią znaną lokalizację urządzenia użytkownika. Gdy aplikacja jest
i połączysz urządzenia, możesz użyć
getLastLocation()
metody pobierania lokalizacji urządzenia. Precyzja zwróconej lokalizacji
w ramach tego połączenia zależy od ustawień uprawnień ustawionych w aplikacji
zgodnie z opisem w przewodniku
poprosić o dostęp do lokalizacji.
Aby poprosić o ostatnią znaną lokalizację, wywołaj
getLastLocation()
. Poniższy fragment kodu ilustruje żądanie i łatwą obsługę polecenia
odpowiedź:
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 } } });
getLastLocation()
zwraca Task
który umożliwia uzyskanie
Location
obiekt o współrzędnych geograficznych
położenie geograficzne. Obiekt lokalizacji może znajdować się w lokalizacji null
w następujących sytuacjach:
- Lokalizacja jest wyłączona w ustawieniach urządzenia. Rezultatem może być
null
, nawet jeśli ostatnia lokalizacja została wcześniej pobrana, ponieważ wyłączenie lokalizacji powoduje też wyczyszczenie pamięci podręcznej. - Urządzenie nigdy nie zarejestrowało swojej lokalizacji. Być może urządzenia lub urządzenia, na którym zostały przywrócone ustawienia fabryczne.
- Usługi Google Play na urządzeniu zostały ponownie uruchomione i nie ma aktywnych Klient dostawcy uśrednionej lokalizacji, który poprosił o lokalizację po i usługi zostały uruchomione ponownie. Aby uniknąć takiej sytuacji, możesz utworzyć nowego klienta i o aktualizacje lokalizacji. Więcej informacji znajdziesz w sekcji Odbieranie lokalizacji. Aktualizacje.
Wybierz najlepszą szacowaną lokalizację
FusedLocationProviderClient
udostępnia kilka metod pobierania danych z urządzenia
informacje o lokalizacji. Wybierz jedną z tych opcji w zależności od
przypadek użycia:
getLastLocation()
szybciej uzyskuje przybliżoną lokalizację oraz minimalizuje wykorzystanie baterii, przypisanej do Twojej aplikacji. Jednak informacje o lokalizacji mogą być nieaktualne, jeśli żaden inny klient ostatnio używała lokalizacji.getCurrentLocation()
otrzymuje bardziej aktualną i dokładniejszą lokalizację. Jednak ta metoda może powodować obliczanie aktywnej lokalizacji na urządzeniuJest to zalecany sposób, jeśli tylko jest to możliwe, aby uzyskać nową lokalizację. Jest bezpieczniejsze niż opcje, takie jak rozpoczynanie aktualizacji lokalizacji i zarządzanie nimi siebie za pomocą usługi
requestLocationUpdates()
. Jeśli aplikacja dzwonirequestLocationUpdates()
, aplikacja może czasami zużywać duże ilości zasilania, jeśli lokalizacja jest niedostępna lub jeśli żądanie nie zostanie poprawnie zatrzymane po ustaleniu nowej lokalizacji.
Dodatkowe materiały
Więcej informacji o pobieraniu bieżącej lokalizacji w Androidzie znajdziesz następujące materiały:
Próbki
- Przykładowa aplikacja pokazująca sprawdzone metody pobierania bieżącej lokalizacji.