7

Mogą być podobne pytania dotyczące tego tematu, ale potrzebuję Twoich przemyśleń i sugestii dotyczących określonych wymagań.Pobierz dokładne pośrednie punkty lokalizacji w tle i obliczyć Odległość początkowych i końcowych lokalizacji w systemie Android.

Oto moja potrzeba - Opracowujemy jedną aplikację, która śledzi podróż użytkownika. Aplikacja rozpocznie zbieranie lokalizacji tego użytkownika w tle, Gdy użytkownik "Uruchamia" swoją podróż z App.Background Service będzie pobierać lokalizacje na podstawie ruchu użytkownika w określonym czasie. Gdy użytkownik "zatrzymuje" swoją podróż z aplikacji, obliczamy odległość przebytą przez użytkownika za pomocą wszystkich zarejestrowanych lokalizacji (za pomocą interfejsu Google Distance Calculating API). Aplikacja działa dobrze w idealnym przypadku. Ale głównym wyzwaniem jest - W niektórych sytuacjach nie jesteśmy w stanie pobrać dokładnej i dokładnej lokalizacji Użytkownika. Dotyczy to następujących scenariuszy: Brak internetu, Plan danych z 2g/3g, niektóre obszary, w których GPS nie zwraca dokładnych danych itp.

Niepoprawne dane o długości geograficznej powodują nieprawidłową odległość i trasę podróży. Zasadniczy problem związany z aplikacją .

Proszę, ktoś może zaproponować najlepszą alternatywę/Sugestię do tego? P.S. - Wypróbowaliśmy GPS, Network, FusedLocationProvider.

EDIT 2 -

Wdrożyliśmy logiki na podstawie dokładności i distances.Got bliżej punktów. Właśnie natrafiliśmy na jedno przydatne API od Google, które poprawia niektóre punkty lokalizacji, które są rozpraszane przez rzeczywiste Drogi. Delegowania tutaj odniesienia do innych ...

Snap to Roads Api from Google

Odpowiedz

1

Spróbuj wymieszać GPS i Przyspieszeniomierz

Jeśli wykryje, że GPS przestał działać, włącz akcelerometr. Jeśli GPS zostanie ponownie włączony, oblicz ponownie odległość. W ten sposób możesz mieć trasę z częściami GPS i akcelerometrami. Im większe części GPS, tym dokładniejsze dane będą

+0

Czy możesz podać dowolny fragment kodu? Przykład tego samego? –

+0

https://developer.android.com/guide/topics/sensors/sensors_motion.html#sensors-motion-stepcounter Istnieje kod o zliczaniu kroków lub można posłuchać kroków. https://stackoverflow.com/questions/6368286/detecting-gps-on-off-switch-in-android-phones Tutaj można sprawdzić, czy GPS jest wyłączony. Gdy GPS jest wyłączony, zacznij odliczać kroki za pomocą akcelerometru. Po ponownym włączeniu GPS przestań liczyć kroki z akcelerometrem –

2

to skomplikowany temat.

Jedna uwaga, którą musisz wziąć. Android Oreo ogranicza usługi tła i to, co chcesz osiągnąć, nie będzie działać.

chciałbym zrobić to (i jest to zalecenie goolge)

Kiedy ktoś zaczyna podróży (użytkownik jest świadomy), należy uruchomić na zamiar powiadomienia o planie służby, don” polegać już na usługach w tle. Sprawdź funkcję "Rozpocznij aktywność" w aplikacji Google Fit.

Jeśli chodzi o brak sygnału lub dokładny GPS, cóż ... jest to problem geograficzny !, nic nie można zrobić. A może możesz, używając LocationProvider.

Usługa FusedLocationProvider jest połączona z każdą aplikacją, która żąda aktualizacji lokalizacji.

Przeczytaj to i sprawdź, czy to ci pomoże.

https://developer.android.com/guide/topics/location/strategies.html

+0

Usługi pierwszoplanowe nie są tak odpowiednie w wymaganiach mojej aplikacji .. :(Sprawdziłem działanie usługi Google fit.Besides Foreground, jestem bardziej zainteresowany lokalizacjami przez nich śledzonymi. może być za pomocą czujników. Poprawne? –

+0

Zobacz także na https://github.com/googlesamples/android-play-location, sprawdź przykład "LocationUpdatesForegroundService", może to być dobry sposób na wdrożenie aplikacji, usługa zaczyna się w tło, a kiedy aplikacja idzie w tle, usługa promuje się na pierwszy plan itd. Jest to bardzo interesujące –

+0

Hej ... Zrobiliśmy warunki i logikę z dokładnością i dystansem, aby uzyskać bliższe punkty lokalizacji.Teraz jedynym problemem jest, gdy zdobędziemy lokalizację po drugiej stronie drogi, odległość zostanie odzwierciedlona. Każdy pomysł, aby uzyskać dokładny punkt tylko na drodze? Podczas całej trasy ?? –

1

How to get more accuracy by GPS_PROVIDER

Zasadniczo jeśli dokładność lokalizacji jest nie do przyjęcia go wyrzucić. Następny będzie lepszy.

+0

Próbowałem już tego. Problem polega jednak na tym, że każde urządzenie ma inny poziom dokładności, który można uznać za "LEPSZE". Na przykład, jeśli porównasz ją z powiedzmy dokładnością 50 metrów, lokalizacje niektórych urządzeń nie są rejestrowane, ponieważ mają poziom dokładności zawsze przekraczający ten poziom.Niektóre urządzenia mają minimalną dokładność od 1500 do 2500 na podstawie sprzętu ... –

+0

Tak, każde urządzenie jest inaczej czekam na 100 lub mniej, aby uzyskać dokładność i stworzyć piękne kilometrowe linie na mapie. Dokładność drugiego punktu w metrach 1500 to 1,5 kliknięć, a nie lokalizacja GPS. – danny117

+0

Hej ... Zrobiliśmy warunki i logikę z dokładnością i odległością, aby uzyskać bliższe punkty lokalizacyjne. Teraz jedynym problemem jest to, że gdy zdobędziemy lokalizację po drugiej stronie drogi, odległość zostanie odzwierciedlona. Każdy pomysł, aby uzyskać dokładny punkt na drodze tylko? Podczas całej trasy? –