Android: включите устройство программно

У меня смартфон подключен к солнечному зарядному устройству. Днем, он включен правильно. Но ночью иногда он отключается из-за недостатка энергии.

У меня вопрос: можно ли включить его (программно), когда заряд батареи превышает определенный процент? Я ищу чистый и законный путь. Меня не интересуют недостатки или подвиги. Я ничего не нашел в официальной документации. Спасибо.

6 ответов

Решение

Механизм для этого основан на замене сценария анимации батареи, который запускается, когда устройство выключено, но подключено к сети, и обычно отображает значок зарядки батареи. Имя скрипта варьируется от устройства к устройству, но обычно оно находится в /system/bin каталог. Устройства Samsung обычно называют сценарий playlpmи другие имена для сценария, который я видел, включают ipod, lpm, а также battery_charging, Это не обязательно будет работать на каждом устройстве, потому что это далеко за пределами стандартной платформы Android - некоторые устройства могут не иметь эквивалентный сценарий, или они могут реализовать его по-другому.

Это можно охарактеризовать как "эксплойт" в том смысле, что он требует root и работает на уровне Linux, а не на уровне платформы Android, но в настоящее время нет альтернативы для реализации этого поведения.

Общий механизм внесения этих изменений описан здесь: https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected. Конечно, неплохо бы сделать резервную копию предыдущего сценария анимации батареи, прежде чем делать что-либо из этого.

Следующий скрипт работал для меня на нескольких устройствах (несколько устройств Samsung и Verizon Ellipsis 7). По сути, он проверяет, подключен ли телефон к сети переменного тока и достаточно ли он заряжен. Если это так, он загружается. Если нет, он ждет N секунд и пытается снова. Как побочный эффект, оригинальный скрипт анимации батареи не будет работать, и вы никогда не увидите красивую анимацию зарядки.

#!/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

У меня нет решения, которое не зависит от аппаратного обеспечения и не требует рутирования устройства.

Этот ответ просто предназначен для выяснения некоторых недоразумений.

"устройство выключено, на нем нельзя запустить программное обеспечение любого типа"

Это и правда, и ложь. Во-первых, ни одно современное устройство никогда не выключается. Иногда кнопка выключения предназначена только для показа (например, вашего телевизора). Иногда процессор действительно отключается, но дополнительные схемы на материнской плате по-прежнему питаются постоянным током. Во-вторых, эта дополнительная схема может обеспечить питание процессора и других схем при определенных обстоятельствах, например, при пробуждении при каком-либо внешнем событии (например, подключении к зарядному шнуру) или когда таймер отключения процессора достигает нуля.

Единственный способ по-настоящему выключить современное устройство, такое как смартфон, - это извлечь аккумулятор и шнур питания. И даже это иногда не работает, так как небольшая батарея или конденсатор с малой утечкой могут находиться на материнской плате, чтобы сохранить некоторое рабочее состояние.

Невозможно без рута устройства

Если устройство выключено, на нем нельзя запустить программное обеспечение любого типа.

В прошлый раз, когда я проверял, что рутирование является "легальным" и требуется для этого.

Например, этот файл /system/bin/battery_charging может быть расположен на вашем устройстве. Отредактируйте это, чтобы содержать

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

И установить некоторые разрешения

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

Взято отсюда: https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected

Запуск устройства - это аппаратная задача, и для его запуска необходимо физическое питание (здесь при нажатии кнопки питания). тогда вы не можете сделать это с помощью кода. должна быть физическая сила.

Другие вопросы по тегам