2013-03-03 11 views
5

Chcę uzyskać aktualne dokładne współrzędne lokalizacji w systemie Android. Jestem w stanie uzyskać lokalizację, jeśli telefon komórkowy jest podłączony do połączenia internetowego Wi-Fi, ale w innym przypadku, gdy idę gdzie indziej i nie ma dostępu do Internetu, to nie podając aktualnych współrzędnych lokalizacji. zamiast tego podaje ostatnie współrzędne lokalizacji.Jak uzyskać aktualną dokładną lokalizację w Androidzie bez połączenia z Internetem?

Na przykład:

Obecnie jestem w mieście i uzyskać aktualne współrzędne przez na połączenie wifi i przenieść się do miasta B wtedy nie jestem w stanie pobrać aktualne współrzędne. Zamiast tego podaje ostatnie współrzędne lokalizacji.

Czy ktoś może zaproponować mi, jak uzyskać aktualną lokalizację bez połączenia z Internetem.

+1

Widząc jak android używa AGPS, nie możesz. –

+0

@Raghav Sood Nie ma sposobu, aby rozwiązać mój problem? –

+0

AGPS oznacza Assisted GPS. W tym module GPS jest wspomagany przez dane pobierane z Internetu. Brak internetu = brak AGPS –

Odpowiedz

1

Kod, który pokazałeś jest tylko metodą klasy getLocation. Przypuszczalnie twoja klasa również implementuje LocationListener, zgadza się? (Zakładając, że nie, nie widząc go, ponieważ można przypisać „to” w requestLocationUpdates jako słuchacza.)

zostały pokazane będą tylko kiedykolwiek powrócić ostatniej znanej lokalizacji, ponieważ aktualizacje lokalizacji przez dostawców są asynchroniczny metody. Wskazujesz, że chcesz uzyskać informacje o lokalizacji poprzez rejestrację odbiornika, i że słuchacz otrzymuje okresowo aktualizacje (na podstawie ustawień, które mu podasz, w oparciu o rzeczywiste możliwości urządzenia i okoliczności). NIE otrzymasz lokalizacji od razu po rejestracji.

W przypadku pytania, uzyskanie informacji o lokalizacji, gdy NIE jest połączone z siecią, musisz użyć dostawcy GPS (działa, gdy nie jest podłączony do sieci danych). Po zarejestrowaniu odbiornika odbiornika GPS (jak już masz), otrzymasz aktualizacje lokalizacji przez wywołanie zwrotne w odbiorniku, onLocationChanged(Location location).

Do czego służy wywołanie zwrotne w trybie onLocationChanged?

W ten sposób otrzymasz zaktualizowane informacje o lokalizacji od kilku sekund do kilku minut po zarejestrowaniu dostawcy GPS (jak szybko zależy od sprzętu w używanym urządzeniu i warunków środowiskowych, GPS używa wielu satelitów i działa szybciej z wyraźnym widokiem nieba, może nie działać w ogóle, jeśli jesteś w pomieszczeniu lub sygnał jest w inny sposób zasłonięty).

Oprócz czekania na to, że słuchacz może uzyskać zaktualizowane informacje o lokalizacji, możesz również rozważyć użycie prostszych, oddzielnych metod, aby uzyskać ostatnią znaną lokalizację i zarejestrować się u najlepszego dostawcy. Możesz użyć kilku prostych pętli i interesującego Cię Criteria (COARSE vs FINE, LOW_POWER lub nie itp.).

Deweloperzy Android udokumentowali to całkiem dobrze w dokumentach, oraz przykładową aplikację "Protips for Location" z otwartym kodem źródłowym i postem "Deep Dive" (zawierającym linki do wszystkich innych zasobów w nim): http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html .

-2

Bez Internetu i GPS można uzyskać lokalizację w oparciu o GSM (sieć komórkowa).

NETWORK_PROVIDER rozwiąże w sieci GSM lub Wi-Fi, które są dostępne. Oczywiście przy wyłączonym wifi zostanie użyte GSM. Dokładność sieci komórkowej może jednak wynosić od 500 do 2000 MB.

+0

Plakat już wie o dostawcy sieci, i przypisuje je w pierwotnym pytaniu. Problem polega na tym, że nie czeka na słuchacza. (Również dostawca sieci nie zawsze używa "GSM lub Wi-Fi", nie wszystkie urządzenia są GSM, a dostawca sieci może być dokładniejszy niż min. 500 m, to z pewnością nie musi, ale to nie jest najlepszy przypadek). –

Powiązane problemy