Tot săpând după diverse setări (în continuarea articolului despre GPS asistat pe Android) am mai găsit o idee interesantă, care s-a dovedit foarte practică.

Concret:

  • poziționarea pe un telefon Android (și un smartphone în general) se face prin 3 metode mari și late: network location (în funcție de celulele GSM la care este conectat telefonul), WiFi location (în funcție de rețeaua WiFi la care este conectat telefonul) și GPS location (prin recepția semnalelor satelit).
  • network location și WiFi location folosesc o bază de date predefinită cu poziția geografică a celulelor/ruterului WiFi (IP geolocation). Merg aproape instant, necesită conexiune la internet.
  • GPS location nu necesită conexiune internet, dar poate fi ajutată prin descărcarea efemeridelor (un fișier ce conține poziția curentă a sateliților GPS și care este valabil doar o săptămână). Când un chip GPS are semnal suficient de puternic de la un număr suficient de sateliți, se cheamă că s-a făcut un “gps fix” și precizia poziționării este suficient de mare (în general, sub 100 metri).
  • Un GPS fix se poate obține “la rece” (de exemplu când aparatul a fost oprit) sau “la cald” (când s-a obținut o poziționare anterioară și chipul GPS este reactivat după o perioadă). Durata obținerii poziției precise poate fi de la câteva minute pentru un cold fix până la câteva secunde pentru un hot fix. Durata depinde și de vizibilitatea cerului, condițiile atmosferice, vreme, etc.

Eh, numai că sunt situații când folosești un program de navigație care se bazează doar pe GPS și ai nevoie de un GPS fix rapid, pentru ca programul să știe poziția curentă și să poți calcula o rută. Având o poziție inițială estimativă, poți porni la drum liniștit iar GPS-ul își va stabili conexiunea pe parcurs.

Trucul de mai jos realizează fix asta: odată inițializat chipul GPS din telefonul cu Android, aplicația care folosește GPS-ul va crede că primește un GPS fix aproape imediat. În realitate, poziționarea inițială este pe baza celulelor GSM/WiFi și are o eroare destul de mare (1-2 km de obicei prin orașe, 10-20 km în afara lor). Cu toată eroarea asta, poziționarea e suficient de bună pentru a porni navigarea. Ulterior, pe măsură ce sateliții sunt recepționați corespunzător, precizia poziționării se va îmbunătăți ajungând la nivel de metri (“adevăratul GPS fix”, ca să zic așa).

Bun, ce trebuie făcut pentru asta: se remontează partiția system din telefon cu adb (adb remount /system rw) și se înlocuiește conținutul fișierului /system/etc/gps.conf cu următoarele:


NTP_SERVER=1.ro.pool.ntp.org
NTP_SERVER=ro.pool.ntp.org
NTP_SERVER=europe.pool.ntp.org
XTRA_SERVER_1=http://xtra1.gpsonextra.net/xtra.bin
XTRA_SERVER_2=http://xtra2.gpsonextra.net/xtra.bin
XTRA_SERVER_3=http://xtra3.gpsonextra.net/xtra.bin
SUPL_HOST=supl.google.com
SUPL_PORT=7276
DEBUG_LEVEL=0
INTERMEDIATE_POS=1
ACCURACY_THRES=5000
REPORT_POSITION_USE_SUPL_REFLOC=1
ENABLE_WIPER=1
SUPL_NO_SECURE_PORT=7276
SUPL_SECURE_PORT=7276
CURRENT_CARRIER=common
DEFAULT_AGPS_ENABLE=TRUE
DEFAULT_SSL_ENABLE=FALSE
DEFAULT_USER_PLANE=TRUE

Tagged with:
 

2 Responses to gps ultra-rapid pe android

  1. Deci, măcar pentru asta trebe să ne vedem. :)))

Leave a Reply

Your email address will not be published. Required fields are marked *


Anunţă-mă când sunt comentarii noi. Te poţi abona fără a comenta.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Set your Twitter account name in your settings to use the TwitterBar Section.