- 低电量或者高低温检测
frameworks\base\services\core\java\com\android\server\BatteryService.java
BatteryService中的update方法会间隔时间的不断更新。
frameworks\base\core\res\AndroidManifest.xml
这里收到关机广播时会创建一个新的activity task.
frameworks\base\core\java\com\android\internal\app\ShutdownActivity.java
在关机activity task中创建一个关机进程。
frameworks\base\core\java\android\os\PowerManager.java
frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java
这里创建一个runnable 并发送到PMS 消息队列中。mContext 是PMS context。
frameworks\base\services\core\java\com\android\server\power\ShutdownThread.java
根据confirm是否弹出关机确认框。
private static final ShutdownThread sInstance = new ShutdownThread();
这里会创建ShutdownThread 进程,并发送调用PMS binder 的runnable到其消息队列。最后调用ShutdownThread进程run()来关闭其它服务。
- A43高低温警示与关机控制
3.1 需求如下
3.2 实现如下
BIT0:充电器电压过高
BIT1:电池高温
BIT2:充电电流过大
BIT3:电池电压过高
BIT4:充电时间过长
BIT5:电池温度过低
增加如下定义:
BIT16:电池温度超过60度,出关机前5S提示:即将关机
BIT17:电池温度低于-20度,出关机前5S提示 :即将关机
vendor\mediatek\proprietary\frameworks\opt\batterywarning\batterywarning.cpp
节点/sys/devices/platform/mt-battery/BatteryNotify 值与BIT0~BIT31对应
android.intent.action.BATTERY_WARNING 对应广播
这里每10s读一次节点值
vendor\mediatek\proprietary\frameworks\opt\batterywarning
低电量app
vendor\mediatek\proprietary\packages\apps\BatteryWarning\src\com\mediatek\batterywarning\BatteryWarningActivity.java
根据广播android.intent.action.BATTERY_WARNING 携带的信息确定警示类型,从而响应的弹出警告框或者关机。