Synchronisieren Sie Zeitstempel über mehrere Geräte hinweg

8

Ich versuche, die Zeitstempel zwischen mehreren Android-Geräten zu synchronisieren, damit ich gleichzeitig eine Aufgabe starten kann. Ich stelle fest, dass ich Timer verwenden und ein Datum basierend auf System.currentTimeMillis () einstellen kann, aber das Problem scheint zu sein, dass die Zeitstempel von mehreren Geräten gerade weit genug voneinander entfernt sind, dass ich nicht die Präzision bekomme, die ich möchte.

Ich schaue irgendwo in den Bereich von 50-100 ms, wenn möglich. Eine Idee war, Android Beam zu verwenden, um den Zeitstempel eines Geräts an das andere Gerät zu senden und dann ein Delta zu berechnen, aber es stellt sich heraus, dass ich den Zeitstempel abrufen muss, bevor die Nachricht tatsächlich gesendet und empfangen wird (dh je länger ein Benutzer ist) wartet, um zu senden, je größer das Delta sein wird), was dieses Schema komplett auseinanderfallen lässt.

Wie kann ich zwei oder mehr Geräte synchronisieren, so dass ihre internen Uhren nicht mehr als 100 ms voneinander entfernt sind? Ist das überhaupt möglich, ohne einen externen Server zu nutzen, der die Zeit hält?

Alle anderen Vorschläge für Techniken, um etwas über mehrere Geräte gleichzeitig so nahe wie möglich zu machen, wären ebenfalls willkommen.

    
Norman Lee 19.08.2013, 22:02
quelle

4 Antworten

4

Warum nicht die GPS-Zeit verwenden? Die Zeitmarken von GPS sind ziemlich genau.

Sie könnten alle Geräte zu einer bestimmten Zeit vereinbaren und dann starten, wenn das GPS es Ihnen sagt.

    
Stefan 19.08.2013 22:06
quelle
2

Im Wesentlichen haben Sie zwei Möglichkeiten: die einfache oder die harte Art.

Der einfachste Weg besteht darin, eine einzige externe Quelle für Zeitsignale zu verwenden, z. B. NIST . eine andere Internetquelle oder GPS wie @Stefan vorschlägt. Internetquellen verwenden NTP, siehe Java NTP-Client Frage.

Der schwierige Weg ist Clock-Synchronisation zwischen den Geräten.

    
andy256 19.08.2013 22:42
quelle
0

Ich habe gerade mit dem gleichen Problem zu kämpfen. Ich habe versucht, GPS-Zeit, aber ich kann nicht garantieren, dass der Benutzer GPS-Signal drinnen haben wird.

Meine Lösung bestand darin, dass alle Geräte die Zeit von einem NIST-Server abrufen und dann die Zeitdifferenz einfach mit System.currentTimeMillis ()

addieren oder subtrahieren

Wenn die Geräte gerootet sind, könnten Sie versuchen, die Uhren zu synchronisieren.

Ссылка

    
Chrystian 19.08.2013 22:41
quelle
0

Android GPS-Hardware haben in der Regel nur Sekunden Genauigkeit. Die drei letzten Zeitstempel der Millisekunden-Fließkommazahl sind 000.

    
Hérico 17.12.2014 12:59
quelle

Tags und Links