Uzyskiwanie ostatniej znanej lokalizacji

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ądzeniu

    Jest 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 dzwoni requestLocationUpdates(), 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