偶然间阅读到了这条,瞬间颇有感触,把自己的一些心得写出来和大家分享。
如果开发者的设备使用的是常电,那么没有供电方面的困扰。可是如果使用电池+充电模式,如车载定位器、定位手表等设备,那么就要小心啦。如果像文中一样,很可能出现“充电–开机–低电关机–重启–充电–开机”的死循环情况。长此以往,还真可能损坏硬件。
那么如何解决这个问题呢?建议开发者增加如下机制:设备启动后:
检查上次关机的原因: 1、检查电池电压,如果电压过低,则禁止射频(飞行模式),并进入睡眠模式,等待电池电压足够高以后再开启射频;
2、如果上次关机是低电关机,强制检查电池电压,再决定是否开启射频;
3、如果无法检测电池电压,则反复进行提示(LCD)或者上报状态,同时关机。
关机前,记录下关机前电压、关机原因、关机时间(手动关机、程控关机、低电关机等),意外掉电的情况无法因记录则放弃。开机后,可以,也可以检查记录文件,如果开机关机间隔很短,且多次短时间内重启,则可能出现“充电开关机死循环”,此时应i主动上报状态(LCD/网络),同时禁止射频(飞行模式)+进入休眠,给电池一个充电的缓冲时间。
可能用到的函数:低电关机设置:http://wiki.openluat.com/doc/luatApi%20-backup/#sysinit
检测电池电压:http://wiki.openluat.com/doc/luatApi%20-backup/#miscgetvbatt
进入飞行模式:http://wiki.openluat.com/doc/luatApi%20-backup/#netswitchfly
进入休眠模式:http://wiki.openluat.com/doc/luatApi%20-backup/#pm