Witam. Jestem w trakcie tworzenia aplikacji która gromadzi dane o naszej lokalizacji w tle zapisując odczytane punkty z GPS w ArrayList po czym na podstawie tych punktów wylicza przebyty dystans, wszystko później jest wyświetlane na mapie w aktywności. Moim problemem jest to, ze stojąc w miejscu nabijają mi się kilometry przez "skakanie aktualnej pozycji po mapie" (efekty widać na załączonym screenie), z czym nie potrafię sobie poradzić i chciałbym zasięgnąć waszej porady. Podobna aplikacja - Endomondo, w jakiś sposób selekcjonuje punkty i mimo tego skakania stojąc w miejscu pokazuje przebyty dystans równy 0.

- Rejestracja:ponad 12 lat
- Ostatnio:8 miesięcy
- Postów:6610
Zaznaczam, że nigdy takiego problemu nie miałem i nie wiem na ile to będzie działać.
Masz coś takiego jak dokładność https://developer.android.com/reference/android/location/Location.html#getAccuracy%28%29 i odrzucać zmiany, które są mniejsze niż dokładność
- Rejestracja:ponad 9 lat
- Ostatnio:prawie 7 lat
- Postów:32
Chodzi o to, że nawet jak dokładność jest na poziomie 10-15m to pozycja przemieszcza sie z niezmienną dokładnościa i efekt wychodzi jak na screenie. Nie jest to nowy telefon i obecnie nowsze telefony są wyposażone w lepsze odbiorniki GPS, które pewnie nie dopuszczają do takich błędów.

- Rejestracja:ponad 12 lat
- Ostatnio:około 2 lata
- Postów:560
A czy nie robiłeś tego przypadkiem w przejściu podziemnym albo budynku ?

- Rejestracja:ponad 12 lat
- Ostatnio:około 2 lata
- Postów:560
No i masz swoją odpowiedź. Stoisz tam pod wiaduktem gdzie złapać satelity raczej ciężkawo, dodatkowo jeżeli chcesz ściągnąć lokacje z innych czujników ( po wifi etc) masz bardzo dużo zakłócaczy ( szczególnie tramwaj).
Albo ustaw lokacje tylko na gps, albo spróbuj potestować w bardziej sprzyjającym miejscu. Bo najbardziej ruchliwe skrzyżowanie w Warszawie pod wiaduktem raczej nie jest strzałem w dziesiątke :P


- Rejestracja:ponad 9 lat
- Ostatnio:prawie 7 lat
- Postów:32
Chodzi o to, że aplikacja ma działać również w takich miejscach jak przystanki tramwajowe (wiaduktu tam nie było :P). W endomondo tego problemu nie ma, bo mimo błędnych odczytów aplikacja nie głupieje i wskazuje dystans poprawnie. Staram się dążyć właśnie do takiego rozwiązania. Znalazłem również algorytm Douglas-Peucker, który pozwala zminimalizować nabijanie kilometrów podczas podróży przy odczytach "zygzakowatych", ale to nadal nie rozwiązuje problemu ze screena :(

- Rejestracja:ponad 12 lat
- Ostatnio:około 2 lata
- Postów:560
po 1. tam jest wiadukt ( dokładnie 2)
po 2. Odczyt będziesz miał tak dobry jak mogą być jego wskazania
Jeżeli chcesz dokładne wskazania a nie to co zwracają Ci czujniki proponuję się zainteresować tym
https://developer.android.com/training/location/index.html
idę o zakład że nie przebijesz inżynierów googla :P
Edit:
Swoją drogą kiedyś zrobiłem test tego co google udostępnia w API a co samo robi. Jest tak brzydko że zazwyczaj wskazania czujników połączone z Location API różnią się od tego co wskazuje pozycja na mapie. zazwyczaj to co pokazują na mapie jest lepsze :P. Czy się da to przeskoczyć to nie wiem.
Kiedyś dosyć długo walczyłem generalnie z nawigacją indoor, jest to bardzo złożone zagadnienie i nie da się tego tak prosto opisać co trzeba zrobić żeby było dobrze
- Rejestracja:ponad 9 lat
- Ostatnio:prawie 7 lat
- Postów:32
idę o zakład że nie przebijesz inżynierów googla :P
Jeżeli bym uważał inaczej, to pewnie nie pisałbym na forum o pomoc :P
Co do API to właśnie z niego korzystam w swojej aplikacji. Pokombinuje coś jeszcze, jak na coś wpadnę to się odezwę :)

- Rejestracja:prawie 9 lat
- Ostatnio:około 2 lata
- Postów:430
A jakby zmniejszyć dokładność + uśredniać lub całkowicie usuwać część wyników? Chodzi mi o sytuację w której ustawiasz dokładność powiedźmy 5 metrów. następnie jeśli user stoi to punkty będą w obrębie tych 5 metrów. I jeżeli kolejne punkty są w granicach tych 5 metrów to po prostu je usunąć. Jeśli natomiast punkt jest > 5 metrów od ostatniego punktu to dodać go jako kolejny realny punkt i na ich podstawie (tych punktów) generować przebyty dystans. Dodatkowo (nie wiem jak z wydajnością) można by się pokusić o korzystanie z google maps zakładając że raczej po obszarze budynków się nie chodzi. Byłby tylko problem z ustaleniem kiedy user rzeczywiście do budynku wejdzie.