Witam,
Mam urządzenie (stacja multimedialna w samochodzie), które posiada Androida 2.2
Słabym punktem tego urządzenia jest GPS.
Często sygnał jest słaby, widzi mało satelit, ma problem ze złapaniem fixa (niby standard, ale...).
Zmieniłem antenę na mocniejszą, ale niewiele to pomogło, więc stwierdziłem, że rozbiorę to urządzenie i zobaczę, czy może z samym modułem GPS jest coś nie tak.
W urządzeniu jest standardowy moduł GPS ublox neo6 połączony po interfejsie szeregowym.
Podpiąłem się do niego i tu niespodzianka, moduł działa jak szalony, fixa łapie w kilka sekund, widzi dużo satelit i nie ma problemu z łapaniem fixa.
Jednak zauważyłem pewną ciekawą i niepokojącą rzecz. Otóż informacje o statusie satelit, które wyświetlają wszelkie programy typu GPS Test, GPS Status & Toolbox, Status GPS nie do końca odpowiadają rzeczywistości.
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). Napisałem szybko jakąś aplikację, która to potwierdziła.
Czyli Android jakoś przekłamuje (??) te informacje z GPS sprzedając je poprzez swoje API. O ile ilość widocznych satelit i ich siła odpowiada rzeczywistości to informacje o satelitach użytych do fixa jest nieprawidłowa.
Efekt jest taki, że aplikacje mają prawidłową pozycję geograficzną i inne dane (prędkość, godzina, data), ale że jest mało satelit to może być ona nieprawidłowa bo nie ma fixa, przez co nawigacja nie bardzo chce działać.
Dodatkowy efekt: satelity o numerach od 12 do 30 nigdy nie są używane do łapania fixa (według androida).
Czy ktoś może spotkał się z takim przypadkiem?
Czy da się coś w Androidzie ustawić, zmienić aby info o satelitach było prawidłowe?
Pozycję pokazuje prawidłową, ale nie chce jej wykorzystać, bo nie ma fixa.