Synchronisierungszeit für die Aufzeichnung von Daten auf mehreren Android-Geräten

Diese Frage mag etwas langwierig sein, ist aber offen für viele Vorschläge.

Problemstellung:
Wir haben mehrere MyTouch-Geräte der API-Stufe 8 (Android 2.2), die wir für die Aufzeichnung von Beschleunigungsdaten in einem Vergnügungspark verwenden werden, und zwar auf einer Achterbahn. Wir haben auch eine Visualisierungsfunktion, mit der wir die Beschleunigungsmesserpunkte als Funktion der Zeit darstellen und anzeigen können, zu der sie aufgezeichnet wurden. Hier haben wir ein Dilemma! Die Systemzeiten auf den Android-Geräten sind nicht alle gleich und können auch nicht millisekundengenau (nur manuell mit winziger Genauigkeit, was schrecklich ist) auf dieselbe Zeit eingestellt werden.

Lösungsversuche:
Also habe ich mich zuerst auf die Aufzeichnung von Daten nach einer GPS-Zeit gestützt, die beim Start der App ermittelt wurde. Langer Prozess, kurzer: GPS-Zeit abrufen, Systemzeit abrufen, Differenz abrufen und beim Aufzeichnen eines Datenpunkts die Systemzeit erneut abrufen und die Differenz wieder zur Zeit addieren, diese als Startzeit der Aufzeichnung kennzeichnen und jeweils um 200 Millisekunden erhöhen aufgezeichnete Datenpunkt von dort. Es gibt jedoch zwei Probleme (um die GPS-Zeit zu ermitteln):

VerwendengetLastKnownLocation() ist nicht zu genau. Eigentlich scheint es sehr ungenau. Es gibt mir Zeiten, die 9 Minuten von der aktuellen GMT / UTC-Zeit abweichen. Zufälligerweise ist die Systemzeit auf dem Android-Gerät jedoch auch fast 9 Minuten niedriger ... Der Unterschied zwischen der GPS-Zeit und der Systemzeit liegt normalerweise zwischen 1000 und 5000 Millisekunden (1 bis 5 Sekunden). Es besteht die Möglichkeit, dass mein Code falsch ist. Ich habe es unten eingefügt, damit Sie es sehen können.

requestSingleUpdate() wäre toll zu benutzen, da es einen neueren Ort und vielleicht eine sehr genaue Zeit bekommen würde. Problem? Benötigt API Level 9 ... Geräte, die wir nicht haben.

Ideen:
Hier ist eine Idee, die ich hatte - was ist, wenn ich irgendwie eine globale Zeit von einer Website gezogen habe und die von dort gezogene Zeit als Aufnahmezeit verwendet habe? Problem hier - ich habe keine Ahnung, wie das geht, es ist nur Wunschdenken von mir ...

Eine andere Idee - gibt es eine Art globalgetTime()-Funktionstyp, den ich einfach nicht kenne?

Gründe, warum Android die Zeit von einer ähnlichen Uhr beziehen soll:
Stellen Sie sich zwei Personen vor, die auf einer Achterbahn sitzen - eine auf dem Vordersitz, eine auf dem Rücksitz. Bei der Aufzeichnung von Daten erfährt die vordere Person offensichtlich eine leichte Beschleunigung, bevor die hintere Person eine Beschleunigung erfährt (und wir möchten dies in unserer Visualisierungsgrafik sehen). Aus diesem Grund ist es von entscheidender Bedeutung, dass diese Punkte millisekundengenau nach einer einzigen globalen Zeit aufgezeichnet werden.

Code:

Criteria c = new Criteria();
c.setAccuracy(Criteria.ACCURACY_FINE);

if (mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    mLocationManager.requestLocationUpdates(mLocationManager.getBestProvider(c, true), 0, 0, AmusementPark.this);
    Criteria criteria = new Criteria();
    String bestProvider = mLocationManager.getBestProvider(criteria, false);
    Location location = mLocationManager.getLastKnownLocation(bestProvider);

    try {

        gpsTime = location.getTime();
        systemTime = System.currentTimeMillis();
        timeDif = gpsTime - systemTime;
        Log.e("timedif", "GPS: " + gpsTime + ", System: " + systemTime +", Dif: " + timeDif);

    } catch (NullPointerException e){

    }

}

Aktualisieren:
Hierschlägt jemand eine Art "Server" vorgetTime(). Ich mag seinen Code / seine Antwort wirklich, aber was ist dieser "Server" und / oder wie richte ich einen ein, wenn dies die beste Lösung ist?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage