Witam,
Mam urządzenie (stacja multimedialna w samochodzie), które posiada Androida 2.2.
Jest w nim problem ze słabym sygnałem GPS (mało satelit, problem ze złapaniem fixa).
Myślałem, że to problem hardware'owy więc rozebrałem urządzenie i dobrałem się bezpośrednio do modułu GPS.
Gdy podpiąłem się do niego to zauważyłem, że działa on prawidłowo, widzi satelity, łapie szybko fixa.
Odczyt informacji w androidzie z com1 (/dev/ttymxc0) daje dane bezpośrednio z modułu GPS (protokół NMEA), ale info o satelitach do fixa z NMEA (ramka GSA) nie odpowiada temu, co pokazują aplikacje (czyli API androida: getSatellites() z android.location.GpsStatus).
Pozostałe dane jak pozycja, prędkość itd są prawidłowe. Problem jest tylko z info o satelitach i usedInFix()
W rzeczywistości GPS złapał fixa (ikonka GPS na belce sygnalizuje złapanie pozycji).
Natomiast aplikacje do nawigacji, które używają getSatellites() (np. Sygic), mimo że mają prawidłową pozycję, to wyświetlają brak sygnału GPS, gdy ilość satelit jest niewystarczająca.
Czy da się jakoś zmodyfikować to co zwraca getSatellites(), aby oszukać ilość satelit użytych do złapania fixa? Praktycznie chodzi o samą zmianę stanu usedInFix().
Standardowe aplikacje do oszukiwania pozycji (fake GPS, itp) podmieniają pozycję urządzenia, a ja chciałbym aby pozycja została ta sama, a tylko zmienić ilość satelit użytych do fixa (najlepiej na prawidłową) 🙂
Jako ciekawostkę dodam, że getSatellites() zwraca info, że satelity o numerach 12-30 nigdy nie są używane do złapania fixa, co oczywiście jest nieprawdą potwierdzoną danymi bezpośrednio z GPS.
Będę wdzięczny za wszelkie pomysły.