Wenn Sie die Android-Uhr über den Befehl adb korrigieren möchten, können Sie sie korrigieren, indem Sie sie rooten und den folgenden Befehl aus der Shell eingeben.
$ adb shell "su -c 'date `date +%s`'"
Bei dieser Methode können Sie jedoch nur in Sekunden angeben, sodass im schlimmsten Fall ein Fehler von 1 Sekunde auftritt. Bei normaler Verwendung gibt es kein Problem, aber diese Methode kann nicht verwendet werden, wenn beispielsweise die Abweichung in Sekunden bei der Analyse der Protokollausgabe schwerwiegend wird. Es gibt auch eine Methode zur Verwendung der NTP-Anwendung. Da ich jedoch nur die Anwendung gefunden habe, für die eine Bildschirmoperation erforderlich ist, habe ich mit Python ein Skript zur Automatisierung erstellt und korrigiert.
Ganz einfach, der Befehl adb wird bei XX Stunden, Minuten und Sekunden ausgeführt.
Es scheint, dass es mit einem Shell-Skript gemacht werden kann, aber es war problematisch (ich weiß nicht), also habe ich es in Python implementiert. Da es in 2 Serien geschrieben ist, ändern Sie es bitte in 3 Serien.
import sys
import subprocess
import time
from contextlib import closing
m = 8
def loop():
while True:
t = time.time()
it = int(t*10**m)
if it == int(t)*10**m:
subprocess.call("adb shell \"su -c 'date %d'\"" % int(t), shell=True)
break
if __name__=='__main__':
loop()
print "Done"
Rufen Sie die loop () -Methode auf und geben Sie eine Endlosschleife ein, bis Sie die Zeit einstellen können. Die Zeit wird von time.time () erfasst. Da der erhaltene Wert jedoch float ist, ist auch der Wert nach dem Dezimalpunkt enthalten. Vergleichen Sie den nach dem Aufrunden gerundeten Wert mit der durch m: int (t × $ 10 ^ m $) angegebenen Anzahl von Ziffern und den aufgerundeten und aufgerundeten Wert: int (t) × $ 10 ^ m $. Wenn sie identisch sind, führen Sie den Befehl aus. Wenn nicht, wiederholen Sie die Zeiterfassung erneut. In meiner Umgebung konnte ich die Uhrzeit problemlos einstellen, auch wenn ich bis zu 8 Stellen angegeben habe. Es ist jedoch möglicherweise besser, diesen Bereich je nach Umgebung zu ändern.
Ich dachte, es wurde geschrieben, aber die Methode, die dem Argument m gibt und die Genauigkeit angibt, ist schöner. Danach kann es freundlicher sein, eine Auszeit nehmen zu können. Ich werde es implementieren, wenn ich Zeit habe.
Tatsächlich gibt es eine Verzögerung von der Ausführung des Befehls adb bis zu seiner Wiedergabe, sodass ein Fehler von etwa 10 ms mit einem Spielraum und nicht mit einer 8-stelligen Genauigkeit auftritt. Messen Sie daher, wie groß die Verzögerung ist (ich werde später einen Artikel über die Methode veröffentlichen), verschieben Sie sie im Voraus und führen Sie den Befehl aus. Speziell
padding = 0.07
...
t = time.time() + padding
Die Zeit ist in Form von gestaffelt. In meiner Umgebung betrug die Abweichung etwa 0,07 = 70 ms und ist nicht sehr stabil. Daher muss ich mit dieser Methode eine Abweichung von etwa 100 ms tolerieren.
Recommended Posts