android休眠唤醒流程2
android系统⼀段时间没有操作,
屏幕(screen)将从⾼亮(bright)变为暗淡(dim),如果再过段时间还是没有操作,屏幕(screen)从暗淡(dim)变为关闭(off).这时,系统将进⼊休眠.⽽对于某些需要保持系统唤醒甚⾄屏幕唤醒的应⽤(⽐如视频播放器和⾳乐播放器)来说,就必须要有⼀个机制,使得系统不进⼊休眠状态,设置保持屏幕亮屏状态.
wakelock即⽤来实现以上⽬的
先上⽹上偷来的⼀副图,说⼀下android系统的整个电源管理流程图
接下来对每⼀个模块具体分析:
powermanager
对应⽂件是android/frameworks/base/core/java/android/os/PowerManager.java
在Android中应⽤程序并不是直接同PowerManagerService交互的,⽽是通过PowerManager间接地与PowerManagerService打交道。
此⽂件定义了⼀个powermanager类.
主要实现了
制作android软件流程1,wakelock的申请与释放
public WakeLock newWakeLock(int flags, String tag)
2,系统延时进⼊休眠
public void userActivity(long when, boolean noChangeLights)
3,系统强制休眠
public void goToSleep(long time)
4,屏幕亮度设置
public void setBacklightBrightness(int brightness)
5,屏幕状态查询
public boolean isScreenOn()
6,系统重启
public void reboot(String reason)
细节
wakelock的申请与释放
{@samplecode
*PowerManager pm = (SystemService(
*                                          Context.POWER_SERVICE);
*PowerManager.WakeLock wl = pm.newWakeLock(
*                                      PowerManager.SCREEN_DIM_WAKE_LOCK
*                                      | PowerManager.ON_AFTER_RELEASE,
*                                      TAG);
*wl.acquire();
* // ...
*wl.release();
⼀共有如下⼏个flag来进⾏不⼀样的唤醒⽅式.可以根据需要设置
Flag Value                  CPU    Screen      Keyboard
PARTIAL_WAKE_LOCK            On*      can-off      Off
SCREEN_DIM_WAKE_LOCK        On      Dim          Off
PROXIMITY_SCREEN_OFF_WAKE_LOCK on      距离传感器时关闭  off
SCREEN_BRIGHT_WAKE_LOCK      On      Bright      Off
FULL_WAKE_LOCK              On      Bright      Bright
ACQUIRE_CAUSES_WAKEUP        确保wakelock,主要⽤于视频播放器
ON_AFTER_RELEASE = 0x20000000    release后倒计时,关闭屏幕
...
userActivity的作⽤:
使系统从其他状态进⼊全部打开状态,⽐如从暗屏(dim)切换到亮屏,并重置倒计时计数器
(待续)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。