我有一个智能手机连接到太阳能充电器.白天,它正确供电.但是在夜晚,由于缺乏能量,它有时会自动关闭.
我的问题是:当电池电量超过一定百分比时,可以将其重新打开(以编程方式)?我正在寻找一种干净合法的方式.我对缺陷或漏洞不感兴趣.我在官方文档中找不到任何内容.谢谢.
执行此操作的机制依赖于更换电池动画脚本,该脚本在设备关闭但插入时运行,通常显示充电电池的图标.脚本的名称因设备而异,但通常位于/system/bin
目录中.三星设备通常调用脚本playlpm
,以及其他名字,我已经看到包括脚本ipod
,lpm
和battery_charging
.这不一定适用于每个设备,因为这远远超出了标准的Android框架 - 某些设备可能没有等效的脚本,或者它们可能以不同的方式实现它.
这可以被描述为"漏洞利用",因为它需要root并且在Linux级别而不是Android框架级别工作,但是目前没有替代方法来实现此行为.
此处描述了进行此更改的一般机制:https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected.当然,在执行任何此操作之前备份先前的电池动画脚本是个好主意.
以下脚本在多个设备(多个三星设备和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