Horloge Android correctement correcte avec adb et python

Préface

Si vous souhaitez corriger l'horloge Android à partir de la commande adb, vous pouvez la corriger en l'enracinant et en tapant la commande suivante à partir du shell.

$ adb shell "su -c 'date `date +%s`'"

Cependant, avec cette méthode, vous ne pouvez spécifier qu'en secondes, donc dans le pire des cas, une erreur de 1 seconde se produira. Il n'y a pas de problème en utilisation normale, mais cette méthode ne peut pas être utilisée, par exemple, lorsque l'écart en secondes devient fatal lors de l'analyse de la sortie du journal. Il existe également une méthode d'utilisation de l'application NTP, mais comme je n'ai trouvé que l'application qui nécessite une opération d'écran, j'ai créé un script en utilisant Python pour l'automatiser et je l'ai corrigé.

stratégie

Très simplement, la commande adb est exécutée à XX heures, minutes et secondes.000000.

Implémenté par Python

Il semble que cela puisse être fait avec un script shell, mais c'était gênant (je ne sais pas), donc je l'ai implémenté en Python. Puisqu'il est écrit en 2 séries, veuillez le changer en 3 séries selon le cas.

La source

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"

Commentaire

Appelez la méthode loop () et entrez une boucle infinie jusqu'à ce que vous puissiez régler l'heure. L'heure est acquise par time.time (), mais comme la valeur obtenue est float, la valeur après la virgule décimale est également incluse. Comparez la valeur arrondie après arrondi au nombre de chiffres spécifié par m: int (t × 10 $ ^ m $) et la valeur arrondie vers le haut et arrondie vers le haut: int (t) × 10 $ ^ m $, et si elles sont identiques, exécutez la commande. Sinon, répétez à nouveau l'acquisition du temps. Dans mon environnement, j'ai pu régler l'heure sans aucun problème même si je spécifiais jusqu'à 8 chiffres, mais il peut être préférable de changer cette zone en fonction de l'environnement.

Je pensais que c'était écrit, mais la méthode qui donne m à l'argument et précise la précision est plus belle. Après cela, il peut être plus gentil de pouvoir faire une pause. Je vais le mettre en œuvre si j'ai le temps.

Impact du retard d'exécution de la commande

En fait, il y a un délai entre l'exécution de la commande adb et sa réflexion, donc une erreur d'environ 10 ms se produira avec une marge plutôt qu'une précision de 8 chiffres. Par conséquent, mesurez le délai (je publierai un article sur la méthode plus tard), décalez-le à l'avance et exécutez la commande. En particulier

padding = 0.07
...
    t = time.time() + padding

Le temps est décalé sous la forme de. Dans mon environnement, l'écart était d'environ 0,07 = 70 msec, et il n'est pas très stable, je dois donc tolérer l'écart d'environ 100 ms avec cette méthode.

Recommended Posts

Horloge Android correctement correcte avec adb et python
Interagissez avec Python sur Android à partir d'un PC via adb
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Python et matériel - Utilisation de RS232C avec Python -
python avec pyenv et venv
Fonctionne avec Python et R
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
Robot fonctionnant avec Arduino et python
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Scraping avec Node, Ruby et Python
Grattage avec Python, Selenium et Chromedriver
Grattage avec Python et belle soupe
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
[GUI en Python] PyQt5-Glisser-déposer-
Lire et écrire NetCDF avec Python
J'ai joué avec PyQt5 et Python3
Lire et écrire du CSV avec Python
Intégration multiple avec Python et Sympy
Coexistence de Python2 et 3 avec CircleCI (1.0)
Jeu Sugoroku et jeu d'addition avec Python
Modulation et démodulation FM avec Python
Communiquez entre Elixir et Python avec gRPC
Construction de pipeline de données avec Python et Luigi
Calculer et afficher le poids standard avec python
Surveiller les pannes de Mojo avec Python et Skype
Modulation et démodulation FM avec Python Partie 3
[Automation] Manipulez la souris et le clavier avec Python
Authentification sans mot de passe avec RDS et IAM (Python)
Installation de Python et gestion des packages avec pip
Utilisation de Python et MeCab avec Azure Databricks
POSTER diversement avec Python et recevoir avec Flask
Capturer des images avec Pupil, python et OpenCV
Fractal pour faire et jouer avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Utilisez PIL ou Pillow avec Cygwin Python
Créer et décrypter du code César avec python
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lire et écrire des fichiers JSON avec Python
Gérer les "années et mois" en Python
J'ai installé et utilisé Numba avec Python3.5
Analyse des tweets avec Python, Mecab et CaboCha
Lier Python et JavaScript avec le notebook Jupyter
Surveillance du trafic avec Kibana, ElasticSearch et Python
Modulation et démodulation FM avec Python Partie 2
Crypter avec Ruby (Rails) et décrypter avec Python
Téléchargez facilement des mp3 / mp4 avec python et youtube-dl!
Faites fonctionner des appareils électroménagers avec Python et IRKit
Nettoyer l'environnement python avec Pythonz et virtualenv
Pratiquer le web scraping avec Python et Selenium
Scraping Web facile avec Python et Ruby
Importer et exporter des images GeoTiff avec Python
J'utilise tox et Python 3.3 avec Travis-CI
Construction d'interface graphique heureuse avec électron et python
Utiliser Python et MeCab avec Azure Functions