我有一部智能手机连接到太阳能充电器。白天,它的动力是正确的。但在夜间,有时由于缺乏能量,它会自动关闭。
我的问题是:当电池充电超过某一百分比时,可以(以编程方式)重新打开它?我在找一条干净合法的路。我对瑕疵和功绩不感兴趣。我在官方文件里什么也没找到。谢谢。
发布于 2016-01-04 22:51:09
执行此操作的机制依赖于替换电池动画脚本,该脚本在设备关闭但插入时运行,通常显示充电电池的图标。脚本的名称因设备而异,但通常位于/system/bin目录中。三星设备通常称脚本为playlpm,我看到的脚本的其他名称包括ipod、lpm和battery_charging。这并不一定适用于每一个设备,因为这远远超出了标准的Android框架--有些设备可能没有等价的脚本,或者它们可能以不同的方式实现它。
这可以被描述为一种“利用”,因为它需要根,并且在Linux级别而不是Android框架级别工作,但是目前没有实现这种行为的替代方法。
进行此更改的一般机制如下所述:https://android.stackexchange.com/questions/20021/automatically-power-on-android-when-the-charger-is-connected。当然,在您这样做之前备份之前的电池动画脚本是一个好主意。
下面的脚本在多个设备(几个三星设备和Verizon 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发布于 2016-01-06 21:09:06
我没有一个不依赖于硬件的解决方案,也不涉及设备的根。
这个答案只是为了澄清一些误解。
“设备关机了,没有办法在它上运行任何类型的软件”
这是对的,也是假的。首先,现代设备从来没有真正“关闭”过。有时,关闭按钮只是为了表演(例如你的电视)。有时处理器确实是断电的,但是主板上的附加电路仍然是以涓滴电流供电的。其次,这个额外的电路可以在某些情况下为处理器和其他电路提供电源,例如在某些外部事件(例如,插入充电线)上醒来,或者当一个非处理器计时器达到零时。
真正关掉现代设备的唯一方法,如智能手机,就是去掉电池和电源线。即使这样,有时也不能作为一个小电池或低泄漏电容可能在主板上,以保持某些运行状态。
发布于 2016-01-04 22:36:57
如果没有设备根,就不可能实现
https://stackoverflow.com/questions/34601041
复制相似问题