J'ai un appareil nVidia Shield TV, qui exécute Android TV.
Afin d'intégrer cela dans ma configuration home cinéma, je dois pouvoir déterminer si l'appareil est actif ou en veille.
Pour mes autres appareils, j'utilise simplement ping pour déterminer cela. Cependant, étant donné que les appareils Android sont toujours allumés, cela ne fonctionne pas dans ce cas.
Une façon, bien sûr, serait d'écrire une application simple, qui ouvre un port TCP lorsque l'appareil est actif et le ferme lorsqu'il est en veille.
Ma question est de savoir s'il existe un moyen plus simple, peut-être une application existante ou une autre façon de le faire sans développer ma propre application pour ce faire.
standby
android-tv
Mika Fischer
la source
la source
:)
Réponses:
Il semble que nVidia Shield Android TV soit livré avec Android 5.1.1 et une mise à jour Marshmallow est disponible depuis décembre uniquement. Je suppose que Android 5.1.1 est la version installée sur votre appareil.
Services du système de requête
Activez adb en mode sans fil sur l'appareil. Suivez le guide officiel ou cette réponse d'Izzy pour obtenir des instructions, si nécessaire.
Vous pouvez trouver l'état d'Android - en veille ou éveillé - à partir du vidage de divers services système.
Service: Puissance
Recherchez les chaînes
mWakefulness
et / ouDisplay Power: state
. Les deux vous donneraient le statut dont vous avez besoin.Exemple:
Donne moi
Service: Fenêtre
Rechercher les chaînes
mAwake=true
et / oumScreenOnEarly=true
et / oumScreenOnFully=true
Exemple:
Donne moi
Service: Affichage
Recherchez les chaînes
mState=OFF
et / oumScreenState=OFF
.Exemple:
Donne moi
Utiliser l'automatisation
Si aucun des services système mentionnés dans la méthode précédente ne fonctionnait pour vous, configurez une application d' automatisation , telle que Tasker ou MacroDroid ou Automate.
Nous utiliserions maintenant l'automatisation pour écrire le statut d'Android dans un fichier, comme Sleeping for sleep mode et Awake lorsqu'il est réveillé.
Tasker ,
MacroDroid
Android ne vient malheureusement pas avec
echo
ouprintf
utilitaire, si l'appareil est enraciné, vous pouvez installer busybox et être en paix. Sinon, téléchargez le binaire busybox , définissez les autorisations exécutables et poussez-le à/data/local/tmp
utiliseradb push
. Un autre moyen pour un périphérique non rooté est de conserver trois fichiers, un pour l'état, un avec le texte Sleeping et le dernier avec le texte Awake. Chaque fois que l'écran s'éteint / s'allume, copiez le deuxième / troisième fichier dans le premier.MacriDroid nécessite également un plugin, tel que Secure Settings pour exécuter des commandes.
Action: Paramètres sécurisés → Actions → Exécuter la commande:
echo Sleeping > FILE_PATH
Action: Paramètres sécurisés → Actions → Exécuter la commande:
echo Awake > FILE_PATH
Pour un Android non rooté,
echo
doit être remplacé par./data/local/tmp/busybox echo
. Sinon, effectuez une opération de copie à l'aide de la commandecp SOURCE DESTINATION
.Automatiser
Votre flux devrait plus ou moins ressembler à cette image
(Cliquez sur l'image pour agrandir)
Votre besoin de créer deux flux, l'un pour le sommeil et l'autre pour le réveil. Le deuxième bloc du flux est nommé Diffusion de réception et se trouve sous Applications. Le troisième bloc est nommé File write text et se trouve sous File & Storage.
Vous pouvez maintenant vérifier le contenu de ce fichier en utilisant adb en mode sans fil ou en utilisant SSH (nécessite un serveur SSH sur Android; exécutez le serveur sur toutes les interfaces et ne le liez pas à une seule interface.)
Il existe une autre possibilité, telle que faire en sorte que votre application d'automatisation télécharge le fichier sur un serveur local ou distant afin que vous puissiez interroger ce serveur au lieu d'Android pour connaître l'état.
la source
Ce n'est pas vraiment une solution, mais dans les paramètres de l'appareil, il y a probablement une option qui désactive le Wi-Fi lorsque l'appareil passe en mode veille. Même s'il n'y a pas une telle option, je suis sûr qu'il doit y avoir une demande pour cela. Donc, si le Wi-Fi est désactivé à l'état IDLE, l'approche "ping" fonctionnera, mais vous devrez gérer les mises à jour en arrière-plan qui ne fonctionnent pas et ainsi de suite lorsque l'appareil passe à l'état IDLE.
Je ne pense pas qu'il existe une application par défaut pour cette solution, mais peut-être qu'un autre point vous aidera. Vous pouvez créer votre propre application Android qui écoute PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED
Intent
et après avoir reçu une sorte de demande de votre serveur, elle peut renvoyer si l'appareil est réveillé ou non. Cependant, notez que lorsque votre appareil reçoit une demande de serveur, il se réveillera probablement.la source
Vous pouvez configurer un script shell pour savoir si le périphérique est en mode veille .. si le périphérique est inactif .. vous pouvez ensuite
envoyer un signal au périphérique .. Par exemple, vous pouvez utiliser la commande adb shell comme ci-dessous: adb shell dumpsys deviceidle
la source
dumpsys deviceidle
ne fonctionne pas vraiment sur mon téléphone au moins (donneCan't find service: deviceidle
).