当前位置:  开发笔记 > 运维 > 正文

Android:以编程方式打开设备

如何解决《Android:以编程方式打开设备》经验,为你挑选了1个好方法。

我有一个智能手机连接到太阳能充电器.白天,它正确供电.但是在夜晚,由于缺乏能量,它有时会自动关闭.

我的问题是:当电池电量超过一定百分比时,可以将其重新打开(以编程方式)?我正在寻找一种干净合法的方式.我对缺陷或漏洞不感兴趣.我在官方文档中找不到任何内容.谢谢.



1> abeboparebop..:

执行此操作的机制依赖于更换电池动画脚本,该脚本在设备关闭但插入时运行,通常显示充电电池的图标.脚本的名称因设备而异,但通常位于/system/bin目录中.三星设备通常调用脚本playlpm,以及其他名字,我已经看到包括脚本ipod,lpmbattery_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

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有