学而实习之 不亦乐乎

在 Android 中保持屏幕唤醒不息屏的方法

2023-07-19 19:46:30

在很多情况下要保持手机屏幕长亮,比如播放视频。这里全用的是 FLAG_KEEP_SCREEN_ON 锁。KEEP_SCREEN_ON_FLAG 锁由 WindowsMaganerService 统一管理,

mHoldingScreenWakeLock = pmc.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,""KEEP_SCREEN_ON_FLAG"");

一般情况,上层用,只需将当前窗口增加 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 标志
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
但在 android 视频播放器 MediaPlayer 里有统一接口设置 flags.

代码如下:

@Override 
protected void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
}

简单来说就是把 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 加进onCreate里面,用WindowManager来管理窗口。既然是加在 Activity 的 onCreate 里,不用试验也知道肯定是针对当前一个 Activity 的。如果想让所有的 Activity 都保持唤醒状态怎么办呢?

很简单,使用 BaseActivity 来解决,所有 Activity 继承自 在BaseActivity以及,然后在 BaseActivity 的onCreate中加入:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

就可以保证这些 Activity 处于唤醒状态。