Genau korrekte Android-Uhr mit ADB und Python

Vorwort

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.

Strategie

Ganz einfach, der Befehl adb wird bei XX Stunden, Minuten und Sekunden ausgeführt.

Implementiert von Python

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.

Quelle

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"

Kommentar

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.

Auswirkungen der Verzögerung der Befehlsausführung

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

Genau korrekte Android-Uhr mit ADB und Python
Interagiere mit Python auf Android vom PC über adb
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Python mit Pyenv und Venv
Funktioniert mit Python und R.
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
Lesen und Schreiben von NetCDF mit Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Datenpipeline-Aufbau mit Python und Luigi
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Überwachen Sie Mojo-Ausfälle mit Python und Skype
FM-Modulation und Demodulation mit Python Part 3
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
Passwortlose Authentifizierung mit RDS und IAM (Python)
Python-Installation und Paketverwaltung mit pip
Verwenden von Python und MeCab mit Azure Databricks
POST verschieden mit Python und empfange mit Flask
Bilder mit Pupil, Python und OpenCV aufnehmen
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Verwenden Sie PIL oder Pillow mit Cygwin Python
Erstellen und entschlüsseln Sie Caesar-Code mit Python
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lesen und Schreiben von JSON-Dateien mit Python
Umgang mit "Jahren und Monaten" in Python
Ich habe Numba mit Python3.5 installiert und verwendet
Tweet-Analyse mit Python, Mecab und CaboCha
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Verkehrsüberwachung mit Kibana, ElasticSearch und Python
FM-Modulation und Demodulation mit Python Part 2
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Laden Sie einfach mp3 / mp4 mit Python und youtube-dl herunter!
Betreiben Sie Haushaltsgeräte mit Python und IRKit
Bereinigen Sie die Python-Umgebung mit Pythonz und virtualenv
Üben des Web-Scrapings mit Python und Selen
Einfaches Web-Scraping mit Python und Ruby
Importieren und Exportieren von GeoTiff-Bildern mit Python
Ich verwende Tox und Python 3.3 mit Travis-CI
Fröhliche GUI-Konstruktion mit Elektron und Python
Verwenden Sie Python und MeCab mit Azure-Funktionen