一、如何开启5.0省电模式
打开安卓5.0设备的设置选项,然后前往电池菜单,点击菜单键,弹出并选择“节电助手”,随后点击顶部的开关便可。
此外,要是用户运行的是原生版安卓,可以下拉安卓通知中心,然后点击电池按钮,便可进入电池界面,找到“省电模式”。
开启此模式后,屏幕亮度会调低,后台数据(大部分)关闭,动画全部取消,震动关闭,基本上和厂商们的省电模式行为差不多,都是以牺牲可用性来换取使用时间。
不同的是,开启此模式后,Android 5.0除了一个通知图标之外,还会用无处不在的亮橙色来提醒你:顶部状态栏、底部通知栏全部变为橙色,很多图标等素材资源增加橙色,甚至一些应用的顶部栏里也会变色。
二、相关代码
设置应用入口文件:
./packages/apps/Settings/src/com/android/settings/fuelgauge/BatterySaverSettings.java
托盘显示:
./frameworks/base/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java
托盘中callback回调函数onPowerSaveChanged():
./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
onPowerSaveChanged():(systemui内部处理)
./frameworks/base/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/doze/DozeHost.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/doze/DozeService.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
./frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryController.java
GPS根据mode 更新处理:
./frameworks/base/services/core/java/com/android/server/location/GpsLocationProvider.java:
发送模式切换ing/切换 广播:
./frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
voice根据mode 更新处理:
./frameworks/base/services/voiceinteraction/java/com/android/server/voiceinteraction/SoundTriggerHelper.java
三、省电模式流程分析
1、设置应用入口文件:
./packages/apps/Settings/src/com/android/settings/fuelgauge/BatterySaverSettings.java
节能助手开启或关闭时,调用onSwitchChanged方法,参数isChecked表示节能助手处于开启(true)或关闭(false)状态。开启时isChecked为true,发送消息mStartMode开启新线程开启省电模式;否则关闭省电模式。
2、提供调用接口文件:
.\frameworks\base\core\java\android\os\PowerManager.java
3、发送模式切换广播:
./frameworks/base/services/core/java/com/android/server/power/PowerManagerService.ja