Pomiar prędkości za pomocą iPhone SDK

Muszę zaimplementować natywną aplikację iPhone'a, aby zmierzyć prędkość telefonu (w zasadzie prędkościomierz). Wiem, że możesz to zrobić dość łatwo za pomocą interfejsu API CoreLocation, ale obawiam się zużycia baterii, ponieważ ma to być pomiar w czasie rzeczywistym, który może być używany przez kilka godzin. Rozumiem, że podczas aktywnego monitorowania zdarzeń z aplikacji LocationManager (nawet jeśli nie zależy mi na lokalizacji GPS), jest ona bardzo intensywna.

Inną oczywistą opcją do zbadania byłoby użycie przyspieszeniomierzy do obliczenia prędkości, ale w interfejsie API nie ma nic, co mogłoby ci w tym pomóc. Na podstawie moich badań powinno być możliwe wykonanie tego, ale wydaje się to niezwykle skomplikowane i podatne na błędy. Tłumaczenie z przyspieszenia na prędkość może być trudne, a dane z przyspieszeniomierza iPhone'a mogą być „zaszumione”. Jestem zaznajomiony z przykładem SDK, który demonstruje użycie filtrowania dolnoprzepustowego, itp. - ale nie widziałem dobrego przykładu, który pokazuje prędkość obliczeń.

Czy ktoś ma jakiekolwiek doświadczenie z tym związane, które może udostępniać? Kod byłby fantastyczny, ale tak naprawdę chcę tylko wiedzieć, czy ktoś z powodzeniem to zrobił (dla długiej aplikacji) i jakie podejście podjął.

EDYTOWAĆ: Mam działający prototyp, który używa API LocationManager. Działa OK, ale cykl aktualizacji jest daleki od idealnego pomiaru prędkości w czasie rzeczywistym. W zależności od okoliczności aktualizacja może potrwać do 4-5 sekund. Cruising przy danej prędkości ma tendencję do działania w porządku, ale accel / decel mają tendencję do opóźniania się bardzo źle z punktu widzenia interakcji użytkownika. Muszę też wprowadzić prędkość w inne obliczenia, które wykonuję, a precyzja nie jest tak naprawdę potrzebna.

Wydaje się to możliwe na podstawie (bardzo niewielu) innych aplikacji, które widziałemgMeter który twierdzi, że nie korzysta z GPS, ale dokładnie oblicza prędkość. Jestem naprawdę zaskoczony, że nie ma żadnych referencji ani żadnego przykładowego kodu, który by to pokazał gdziekolwiek mogę znaleźć. Zdaję sobie sprawę, że to skomplikowane, ale na pewno coś tam jest.

questionAnswers(5)

yourAnswerToTheQuestion