7

Pracuję nad aplikacją, która korzysta z danych o lokalizacji i musi działać w Chinach. Urządzenia z Androidem sprzedawane tutaj w dużej mierze nie mają zainstalowanego API Google Play, a jedynym sposobem jest zrootowanie telefonu, aby go zainstalować. Tak więc utknąłem w LocationManager, który działa znacznie gorzej niż LocationClient (część API Google Play).Czy istnieje alternatywa dla klienta lokalizacji (Google Play API)?

Mój problem polega na tym, że menedżer LocationManager, podczas czytania z GPS_PROVIDER, często nie może połączyć się z wystarczającą liczbą satelitów (w Chinach) i istnieje sporadyczna znaczna luka czasowa między poprawkami. Podczas odczytu z NETWORK_PROVIDER mogę uzyskać częstsze poprawki, jednak zakres dokładności wynosi od 30 do 500. Nigdzie nie ma jakości interfejsu API LocationClient.

Aplikacja ma często monitorować ruch ulicami, np. aktualizuj co sekundę (wysokie zużycie baterii, nie stanowi problemu dla mojego klienta) i rób coś, gdy dotrzesz do określonych lokalizacji.

Jeśli korzystam z interfejsu API Google Play i usługi LocationClient, to naprawdę działa. Ale to tylko na Nexusie 4 lub na nie chińskim urządzeniu z Androidem.

Pytam, czy ktoś zna bibliotekę, która może dać lepsze wyniki niż proste użycie LocationManager lub rozwiązanie, w jaki sposób użyć LocationManager do poprawy wyników?

+0

https://github.com/novoda/Novocation – bGorle

+1

Dlaczego nie napisać własnej implementacji za pomocą Menedżera lokalizacji http://developer.android.com/guide/topics/location/strategies.html –

+0

Również http: // android -developers.blogspot.com/2011/06/deep-dive-into-location.html –

Odpowiedz

1

GPS nie działa dobrze ze względu na brak wymaganych metadanych GPS (dane efemeryd i almanach) lub z powodu powolnego pozyskiwania tych metadanych. W tym ostatnim przypadku w większości krajów dane efemeryd GPS i almanach są dostępne za pośrednictwem źródeł sieciowych. Jeśli nie, układ GPS musi pobrać to z satelitów, które mogą zająć 5-20 minut (najszybszy czas, gdy początkowy strumień danych dostarczył wystarczającą ilość informacji dla układu GPS, aby uzyskać blokadę). Nie jestem zaznajomiony z dostępnością tych danych w Chinach za pośrednictwem źródeł sieciowych, ale wygląda na to, że nie są one powszechnie dostępne z tego, czego doświadczasz. (Słowa kluczowe do google, aby uzyskać więcej informacji: SUPL, efemerydy, alamanach).

Gdy GPS nie jest dostępny lub jest wolny, aby uzyskać blokadę, geolokalizacja sieci jest awarią, która wykorzystuje punkty Wi-Fi i wieże komórek do triangulacji pozycji. Wymaga to usługi internetowej dla urządzenia, aby wysłać APs + wieże, które widzi, a usługa odsyła lokalizację. Poziomy dokładności od 30 do 500 metrów są całkiem dobre.

(BTW, pozycja geolokalizacja sieć służy również do „seed” chip GPS, aby pomóc mu dostać się szybciej lock)

geolokalizacji sieci na Androidzie jest zazwyczaj dostarczane przez usługę internetową Google, ale telefon można skonfigurować do korzystania z innych dostawców przez operatorów.

można uniknąć za pomocą Google (Google Play lub sieć serwerów geolokalizacji Google) lub wbudowanej usługi lokalizacji sieciowej próbując Mozilli darmowy do użytku usługę geolokalizacji sieci: https://location.services.mozilla.com/

Trzeba zwrócić API klucz: https://location.services.mozilla.com/api dla próbki kodu: ta aplikacja zarówno przyczynia dane i to klient za usługę: https://github.com/mozilla/MozStumbler

wątpię, to dostanie lepszą dokładność geolokalizacji sieci dla obszaru w którym jesteś, ponieważ jesteś już uzyskiwanie dobrych wyników , ale być może warto to zbadać.

+0

Dzięki za odpowiedź! Nie wiedziałem, że Mozilla ma API geolokalizacji, da mu szansę zobaczenia, jak to działa w Chinach. – Sinisa

Powiązane problemy