Android: Activar un dispositivo mediante programación

Tengo un teléfono inteligente conectado a un cargador solar. Por el día, se acciona correctamente. Pero durante la noche, a veces se apaga debido a la falta de energía.

Mi pregunta es: ¿Es posible volver a encender (de forma programática), cuando la carga de la batería supera un cierto porcentaje? Estoy buscando una manera limpia y legal. No estoy interesado en defectos o exploits. No encontré nada en la documentación oficial. Gracias.

El mecanismo para hacer esto se basa en sustituir el script de animación de la batería, que se ejecuta mientras el dispositivo está apagado, pero conectado, por lo general muestra un icono de la batería de carga. El nombre del script varía de un dispositivo a otro, pero generalmente se encuentra en el directorio /system/bin . Los dispositivos Samsung generalmente llaman al script playlpm , y otros nombres para el script que he visto incluyen ipod , lpm y battery_charging . Esto no necesariamente funcionará en todos los dispositivos, ya que esto está bien fuera del marco estándar de Android: algunos dispositivos podrían no tener un script equivalente o podrían implementarlo de una manera diferente.

Esto podría ser caracterizado como un "exploit", ya que requiere root y funciona a nivel de Linux en lugar del nivel de framework de Android, pero actualmente no hay alternativa para implementar este comportamiento.

El mecanismo general para realizar este cambio se describe aquí: https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected . Por supuesto, es una buena idea hacer una copia de seguridad de la anterior secuencia de comandos de animación de la batería antes de hacer nada de esto.

El siguiente script ha funcionado para mí en varios dispositivos (varios dispositivos Samsung y el Elipse 7 de Verizon). Básicamente, comprueba para ver si el teléfono está conectado a la corriente alterna y tiene suficiente carga. Si es así, arranca. Si no, espera N segundos e intenta de nuevo. Como un efecto secundario, la secuencia de comandos original de animación de la batería no se ejecutará, y no verá nunca la bonita animación de carga.

 #!/system/bin/sh # battery threshold before boot-up (in percent) bthresh=10 # time to sleep between checks (in seconds) sleeptime=600 # file that contains current battery level as integer between 0 and 100 cfi=/sys/class/power_supply/battery/capacity # file that contains 1 if we're plugged in to AC, 0 if not acfi=/sys/class/power_supply/battery/subsystem/ac/online # if either file doesn't exist, just do normal sleep+boot [ ! -f $cfi ] && sleep $sleeptime && /system/bin/reboot [ ! -f $acfi ] && sleep $sleeptime && /system/bin/reboot # populate capacity and AC variables c=`cat $cfi` ac=`cat $acfi` # stop loop if we're not plugged into AC until [ "$ac" -eq 0 ] do # if capacity above threshold, boot up if [ "$c" -gt "$bthresh" ]; then /system/bin/reboot fi # wait some time before next check sleep $sleeptime # update capacity and AC variables c=`cat $cfi` ac=`cat $acfi` done 

No es posible sin enraizar el dispositivo

No tengo una solución que no es dependiente del hardware y no implica el enraizamiento del dispositivo.

Esta respuesta sólo pretende aclarar algunos malentendidos.

"El dispositivo está apagado, no hay forma de ejecutar software de ningún tipo en él"

Esto es verdadero y falso. En primer lugar, ningún dispositivo moderno es realmente "apagado". A veces, el botón de apagado es sólo para mostrar (por ejemplo, su TV). A veces, el procesador está realmente apagado, pero circuitos de adición en la placa base sigue siendo alimentado a una corriente de goteo. En segundo lugar, estos circuitos adicionales pueden alimentar el procesador y otros circuitos de respaldo en ciertas circunstancias, como despertarse en algún evento externo (por ejemplo, enchufar el cable de carga) o cuando un temporizador fuera del procesador llegue a cero.

La única manera de apagar realmente un dispositivo moderno, como un teléfono inteligente, es quitar la batería y el cable de alimentación. E incluso que a veces no funciona como una pequeña batería o condensador de baja fuga podría estar en la placa base para conservar algún estado operativo.

Si el dispositivo está apagado, no hay forma de ejecutar software de ningún tipo en él.

Iniciar un dispositivo es una tarea de hardware y debe haber una potencia física para ejecutar el dispositivo (aquí con presionar el botón de encendido). Entonces no puede hacer esto con código. Debe haber un poder físico.

La última vez que revisé el enraizamiento es "legal" y se requiere para hacer esto.

Por ejemplo, este archivo /system/bin/battery_charging puede encontrarse en su dispositivo. Edítelo para contener

 #!/system/bin/sh /system/bin/reboot 

Y establecer algunos permisos

 chmod 0755/system/bin/battery_charging chown root.shell /system/bin/battery_charging 

Tomado de aquí: https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.