靠近息屏的简单使用

private PowerManager.WakeLock powerWakeLock;
//注意这个tag内容一定要有":",不然后说你的tag不够unique
private final String powerTag = "PowerManagerWakeLock:MYTAG";
在onCreate()里
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
    powerWakeLock = ((PowerManager) getSystemService(POWER_SERVICE)).newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, powerTag);
}
if(powerWakeLock != null && !powerWakeLock.isHeld()){
    powerWakeLock.acquire();
}

在不需要的时候,或者onDestroy()
if(powerWakeLock != null && powerWakeLock.isHeld()){ 
    powerWakeLock.release(); 
}

 如果担心息屏的时候,系统进入休眠(明面上的,类似于点击锁屏键后的浅休眠效果,不是doze模式那种休眠),可以在onCreate()里初始化wakelock之前加上下面这段代码

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

wakelock的PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK貌似不会影响FLAG_KEEP_SCREEN_ON这个flag,也就是说,即便息屏了,但手机实际还是保持屏幕在亮的,只是亮度非常低(实际上直接关掉了),但我就是这样去理解的,我测试的手机是荣耀v10,如果有错,还希望大家指正,因为我也没有跑去源码具体看看,所以错的概率很高。

发布了24 篇原创文章 · 获赞 2 · 访问量 3682

猜你喜欢

转载自blog.csdn.net/ALee_130158/article/details/87915837
今日推荐