Har jag klurat ut något mellan kvällens ölande och StarCraft II på Hard då? Mjo, något har jag väl lyckats gräva fram, men jag vet än så länge inte riktigt vad jag ska dra för slutsats av det.
I den senaste kodbasen från AOSP så finns det en fil:
Kod:
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
Den gör följande referens på rad 180:
Kod:
private static final String PROPERTIES_FILE = "/etc/gps.conf";
Om man då i sin tur följer PROPERTIES_FILE, stöter man på raderna 245-257:
Kod:
// properties loaded from PROPERTIES_FILE
private Properties mProperties;
private String mSuplServerHost;
private int mSuplServerPort;
private String mC2KServerHost;
private int mC2KServerPort;
private final Context mContext;
private final NtpTrustedTime mNtpTime;
private final ILocationManager mLocationManager;
private Location mLocation = new Location(LocationManager.GPS_PROVIDER);
private Bundle mLocationExtras = new Bundle();
private ArrayList<Listener> mListeners = new ArrayList<Listener>();
I närheten av det så finner man en hel del andra GPS-relevanta referenser, AGPs och lite annat.
På rad 423-424 görs körs följande:
Kod:
try {
File file = new File(PROPERTIES_FILE)
och som ni säkert minns från ovan så fanns det en hänvisning till den PROPERTIES_FILE-filen.
Mellan raderna 429-447 försöker det läsas in data enligt:
Kod:
mSuplServerHost = mProperties.getProperty("SUPL_HOST");
String portString = mProperties.getProperty("SUPL_PORT");
mC2KServerHost = mProperties.getProperty("C2K_HOST");
portString = mProperties.getProperty("C2K_PORT");
Kan inte /etc/gps.conf öppnas kommer det att på rad 449 spottas ut:
Kod:
Log.w(TAG, "Could not open GPS configuration file " + PROPERTIES_FILE);
Kikar man på senaste commit-log:en säger den att den 10:e juli 2012, gjordes det senaste bidraget, vilket tyder på att den iaf haft behov att vara petad i under modern tid.
Sååå, vart leder detta oss? Mja, rent spontant känns det som om filen läses in, åtminstonde om koden som hänger med en enhet (i vårt fall specifikt Galaxy Nexus) inkluderar denna GpsLocationProvider.java-fil och den får vara orörd. Den läser in väldigt specifika saker, alltså de fyra inslagen nämnda ovan. Om man tar bort gps.conf eller moddar den så att de getProperty:s koden letar efter saknas, kommer det att loggas fel om det som man kan spana efter via tex logcat.
Jag har inte själv provat att ändra i gps.conf, utan kör original. Jag är dessutom inte en veteran i att rota igenom AOSP-kod utan använder mina färdigheter som Java- och app-utvecklare och erfarenheter och nyfikenhet , så ni får ta uppgifterna för vad de är: ett initialt försök att förstå GPS-inläsningen av "/etc/gps.conf".
Det finns fortfarande en del frågetecken för min egen del, främst tex om det kan göras anpassningar av kod för specifika enheter från olika leverantörer.
Nå, jag lämnar detta för ikväll och ser om jag hittar annat spännande, kanske tillochmed redan imorgon.