34 votes

Mise hors tension d'Android Things

Habituellement, pour mettre hors tension un Android vous le faites via le bouton d'alimentation bien sûr.

Vous pouvez également faire adb shell y reboot -p .

Mais en Choses Android je ne vois pas de moyen d'éteindre l'appareil. Si ce n'est pas un problème, j'aimerais juste couper l'alimentation de mon Raspberry Pi pour cela, mais est-ce acceptable ? Cela pourrait-il corrompre la carte SD ?

0 votes

Bonne question. Rien dans la documentation, mais le système d'exploitation "embarqué"/IoT devrait gérer le manque soudain d'énergie de manière élégante.

0 votes

Je m'attendrais à ce que les appareils Android soient conçus de telle sorte que le débranchement de l'alimentation ne pose aucun problème. J'ai fait cela plusieurs fois avec mon kit de développement et cela ne semble pas être un problème.

0 votes

@shalafi Je l'espère. J'ai fait cela de nombreuses fois avec Linux sur le Pi pendant le développement, mais j'ai fait une carte SD en lecture seule pour la production où le client voulait cette possibilité.

25voto

Devunwired Points 27023

Android (et par extension, Android Things) ne devrait avoir aucun problème avec une perte soudaine d'alimentation. Le système d'exploitation de base est logé dans des partitions en lecture seule sur le système de fichiers, il n'y a donc aucun risque de corrompre le système d'exploitation à partir d'une écriture en vol ratée.

Aussi, reboot -p devrait toujours fonctionner si vous vouliez l'utiliser pour les tests ou le développement. En allant encore plus loin, vous pourriez connecter un fichier Gpio avec un InputDriver qui émet KEYCODE_POWER d'ajouter votre propre bouton d'alimentation au système si vous en aviez besoin.

0 votes

Merci, je pense que je vais aller un peu par là. J'ai besoin de le faire à distance, probablement en utilisant une websocket et un arrêt sur une commande spécifique. Je pense que le débranchement de l'alimentation devrait également être correct, car il est en lecture seule. Tant que je ne laisse pas l'application écrire quelque chose dans son répertoire de fichiers.

1 votes

Je fais juste l'expérience d'une perte soudaine de puissance, et la carte SD est corrompue en conséquence. Je le branche sur Ubuntu, il ne détecte pas la carte SD. Je le branche sur mon téléphone Android, il détecte la carte SD, et affiche un avertissement indiquant que la carte SD doit être formatée. Formatage à partir du téléphone Android, branchement dans Ubuntu, ne détecte pas à nouveau. Brancher dans Windows, il détecte, puis le formater à partir de Windows. Heureusement, ça marche à nouveau. Donc attention.

1 votes

@Devunwired Pour le moment, KEYCODE_POWER n'est pas particulièrement utile pour les appareils sans écran et sans écran tactile. Un appui court sur KEYCODE_POWER éteint l'écran en tentant de mettre l'appareil en mode veille, et un appui long affiche un menu à l'écran qui propose les options " Éteindre " et " Redémarrer " sur lesquelles il faut cliquer.

24voto

Blundell Points 28342

J'aime la réponse de Dave, je voulais juste ajouter deux choses :

Vous pouvez arrêter l'appareil Android Things par programmation de plusieurs façons, mais chacune d'entre elles comporte une mise en garde, que nous évoquons ici : Éteindre l'appareil de manière programmatique

Pour éteindre un appareil AndroidThings comme vous l'avez dit, vous pouvez le faire via ADB :

 adb shell reboot -p

( -p est le diminutif de --poweroff )

0 votes

J'ai besoin qu'il puisse être arrêté à distance, l'appareil fonctionne sans tête. Je ne veux pas qu'un client ait besoin de faire 'adb shell reboot -p' :) Mais le lien que vous avez fourni me donne plusieurs options, merci !

0 votes

Vous pourriez utiliser la messagerie en nuage de Firebase pour notifier votre application, puis utiliser l'une des options programmatiques. Oui, vous avez raison à propos de l'ADB et des clients :-)

0 votes

Cet appareil ne sera pas connecté à Internet dans mon cas d'utilisation, mais c'est une option intéressante pour un autre cas d'utilisation auquel je pense...

11voto

Onik Points 10570

... et de manière programmée

para mise hors tension

Runtime.getRuntime().exec("reboot -p");

y Redémarrage de

Runtime.getRuntime().exec("reboot");

Explanation : le reboot est livré dans l'image Android Things avec la permission d'être exécutable par le monde entier, c'est-à-dire que rwxr-xr-x ce qui lui permet d'être exécutable depuis l'intérieur de l'Union européenne. tout processus d'application. En d'autres termes, un processus d'application n'a pas besoin de gagner su contrairement à la plupart des téléphones/tablettes Android standard, il n'est pas nécessaire d'obtenir une autorisation supplémentaire dans le cadre de l'utilisation d'Android. AndroidManifest.xml .

Attention : en cas de changement de modèle de sécurité dans les nouvelles versions du système d'exploitation, cette approche peut ne pas fonctionner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X