2017-01-17 23 views
5

Korzystam z usługodawcy aplikacji Fused w mojej aplikacji, który jest ustawiony na PRIORITY_HIGH_ACCURACY w odstępie 60 sekund. Zwykle działa, ale czasami lokalizacja nie aktualizuje się sam przez 5 do 10 minut, a kiedy otwieram Mapy Google, wydaje się, że uruchamia aktualizację lokalizacji.Lokalizacja bezpieczna GPS nie aktualizuje się do otwarcia Google Maps.

Ktoś jeszcze tutaj mógł wpaść na tę sprawę lub wie o możliwych przyczynach takiego zachowania? Czy istnieje sposób, aby to naprawić?

+0

Masz dobre pozwolenie na lokalizację? –

+0

Tak, zarówno dobrze, jak i grubo. – Zishan

+0

Czy zażądałeś aktualizacji lokalizacji lub okresowo odpytujesz metodę 'getLastLocation()'? –

Odpowiedz

0

Gps nie zawsze zwraca lokalizację, nawet jeśli jest dostępna przez aplet FusedLocationProvider lub LocationManager LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER). Zwłaszcza, jeśli przebywasz w budynku, jest mniej prawdopodobne, że dostaniesz lokalizację z GPS w zależności od układu Gps Twojego urządzenia. Gps musi zostać naprawiony, aby zwrócić lokalizację.

Możesz napisać aplikację testową, która ma LocationManager z Gps, WiFi i GpsStatusListener, aby sprawdzić liczbę satelitów, satelity w fixie i siłę sygnału satelitarnego i porównać ją z FusedLocationProvider w tym samym czasie i dodać dostarczone lokalizacje do mapy jako markery. Możesz również wyszukać dla FLP Location.getExtras(), która może zawierać informacje o satelitach. Nawet jeśli GPS LocationManager jest dostępny, a liczba satelitów to 2, nie mogę uzyskać lokalizacji z GPS.

Witaj, świecie na obrazie powinna być lokalizacja GPS, ale nie jest ona zwracana, ponieważ nie została jeszcze naprawiona. LocationManager Gps Status test Testowanie może nie rozwiązać problemu, ale można porównać sytuacje, w których znajduje się lokalizacja, lub nie można na przykład użyć 3 satelitów do uzyskania lokalizacji z GPS lub minimalnej siły sygnału. Zablokowanie Gps może zająć zbyt wiele czasu, a stan na GpsStatusListener jest ustawiony na GpsStatus.GPS_EVENT_FIRST_FIX, gdy jest zablokowany. Zajęło mi to około 5 minut, aby Gps został naprawiony i zwrócił lokalizację. Napisałem też kolejny test z mapami i miałem ten sam problem, dopóki Gps nie zostanie naprawiony zarówno w menedżerze lokalizacji, jak i FLP.

0

Moje wyniki z następujących link Fused Location Provider będzie utrzymywać tylko położenie tła, jeśli jest podłączony do co najmniej jeden klient. Gdy pierwszy klient się połączy, natychmiast spróbuje uzyskać lokalizację. Jeśli twoja aktywność jest pierwszym klientem, z którym możesz się połączyć, i zadzwonisz pod numer getLastLocation() od razu, w onConnected(), może to nie wystarczyć na dotarcie do pierwszej lokalizacji. To spowoduje, że będzie to null.

Aby rozwiązać ten problem, musisz poczekać (nieokreślony), aż dostawca uzyska lokalizację, a następnie zadzwonić pod numer getLastLocation(), co jest niemożliwe do uzyskania.

Inną (lepszą) opcją jest implementacja interfejsu com.google.android.gms.location.LocationListener w celu otrzymywania okresowych aktualizacji lokalizacji (i wyłączania po otrzymaniu pierwszej aktualizacji).