android休眠唤醒流程2
android系统⼀段时间没有操作,
屏幕(screen)将从⾼亮(bright)变为暗淡(dim),如果再过段时间还是没有操作,屏幕(screen)从暗淡(dim)变为关闭(off).这时,系统将进⼊休眠.
⽽对于某些需要保持系统唤醒甚⾄屏幕唤醒的应⽤(⽐如视频播放器和⾳乐播放器)来说,就必须要有⼀个机制,使得系统不进⼊休眠状态,设
置保持屏幕亮屏状态.
wakelock即⽤来实现以上⽬的
先上⽹上偷来的⼀副图,说⼀下android系统的整个电源管理流程图
接下来对每⼀个模块具体分析:
powermanager
对应⽂件是android/frameworks/ba/core/java/android/os/
在Android中应⽤程序并不是直接同PowerManagerService交互的,⽽是通过PowerManager间接地与PowerManagerService打交道。
此⽂件定义了⼀个powermanager类.
主要实现了
1,wakelock的申请与释放
publicWakeLocknewWakeLock(intflags,Stringtag)
2,系统延时进⼊休眠
publicvoidurActivity(longwhen,booleannoChangeLights)
3,系统强制休眠
publicvoidgoToSleep(longtime)
4,屏幕亮度设置
publicvoidtBacklightBrightness(intbrightness)
5,屏幕状态查询
publicbooleanisScreenOn()
6,系统重启
publicvoidreboot(Stringreason)
细节
wakelock的申请与释放
{@samplecode
*PowerManagerpm=(PowerManager)temService(
*_SERVICE);
*ckwl=eLock(
*_DIM_WAKE_LOCK
*|_AFTER_RELEASE,
*TAG);
*e();
*//...
*e();
⼀共有如下⼏个flag来进⾏不⼀样的唤醒⽅式.可以根据需要设置
FlagValueCPUScreenKeyboard
PARTIAL_WAKE_LOCKOn*can-offOff
SCREEN_DIM_WAKE_LOCKOnDimOff
PROXIMITY_SCREEN_OFF_WAKE_LOCKon距离传感器时关闭off
SCREEN_BRIGHT_WAKE_LOCKOnBrightOff
FULL_WAKE_LOCKOnBrightBright
ACQUIRE_CAUSES_WAKEUP确保wakelock,主要⽤于视频播放器
ON_AFTER_RELEASE=0x20000000relea后倒计时,关闭屏幕
...
urActivity的作⽤:
使系统从其他状态进⼊全部打开状态,⽐如从暗屏(dim)切换到亮屏,并重置倒计时计数器
(待续)
本文发布于:2023-03-03 07:51:24,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1677801085120662.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:亮屏.doc
本文 PDF 下载地址:亮屏.pdf
留言与评论(共有 0 条评论) |