当在自己自定义的view中需要控制屏幕常亮或者定时灭屏的时候可以通过如下方法:
private void resetKeepScreenOn(boolean isKeepScreenOn) {
if (isKeepScreenOn) {
if (mFloatHandler.hasMessages(DELAY_SCREEN_OFF_MSG)) {
mFloatHandler.removeMessages(DELAY_SCREEN_OFF_MSG);
}
if (!getKeepScreenOn()) {
setKeepScreenOn(true);
}
} else {
if (mFloatHandler.hasMessages(DELAY_SCREEN_OFF_MSG)) {
return;
}
mFloatHandler.sendEmptyMessageDelayed(DELAY_SCREEN_OFF_MSG, 5000);
}
}
在handle中处理对应的消息
case DELAY_SCREEN_OFF_MSG:
setKeepScreenOn(false);
setKeepScreenOn方法参数为true时保持亮屏,为false时灭屏。这样,在需要保持亮屏的时候调用resetKeepScreenOn(true),需要延时灭屏的时候调用
resetKeepScreenOn(false)。
值得注意的是,setKeepScreenOn方法是view的方法,使用时候要注意调用对象。比如,一个自定义view中有一个button,在点击button的时候控制亮屏灭屏
,在点击button的监听器中使用这个方法的时候要用父view去调用。