Android 保持屏幕常亮的几种方法

版权声明:android

本帐号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影全部。markdown

未经容许,不得转载。布局

1、前言

在实际开发的过程当中,会有一些须要保持屏幕常亮,避免进入锁屏状态的需求。最多见的就是视频播放的过程当中,若是屏幕忽然暗了,或者直接锁屏,会很是的影响用户的体验。ui

本篇文章就对 Android 下,如何保持屏幕常量,作一个简单的记录和总结。spa

2、几种常见的方法

一、WakeLock

使用 WakeLock 是一种教科书式的比较常规的手段,使用起来也很是的简单。3d


能够看到,WakeLock 主要是经过 PowerManager 获取,而后经过 acquire() 方法获取一个 WakeLock 资源,WakeLock 也是一种资源,在使用完成以后,别忘了调用 release() 方法进行释放。

使用 WakeLock 还须要额外的声明 WAKE_LOCK 权限。code

<uses-permission android:name="android.permission.WAKE_LOCK" />orm

固然,使用 WakeLock 暂时来看,应该仍是没有什么问题的。可是实际上,全部和屏幕亮度相关的 WakeLock 的 Flag ,在 API level 17+ 之上,都已经被标记废弃了。能够看出 Android 在节能上作了不少努力,屏幕是费电大户,既然已经被废弃掉了,正常来讲,咱们仍是不推荐使用的。视频

更多和 PowerManager.WakeLock 相关的内容,能够看看以前的一篇文章《PowerManager 不是只有 WakeLock 》。对象

二、FLAG_KEEP_SCREEN_ON

前面说了,WakeLock 已经被标记废弃。虽然被废弃了,可是实际上 Android 仍是给咱们提供了对应的解决方案的,那就是使用 FLAG_KEEP_SCREEN_ON 的方式来标记屏幕常亮。

FLAG_KEEP_SCREEN_ON 使用起来也很是的简单,它是一个页面 Window 上的一个 Flag ,使用 addFlags() 方法添加。

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

固然,这里使用完成以后,也是须要取消掉的。取消这个 Flag 使用 clearFlags() 方法来取消。

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

一般咱们会在一个 Activity 的 onResume()onPause() 方法中,分别调用这两个方法。

看看 FLAG_KEEP_SCREEN_ON 的文档解释。


从这里能够看出来,它只做用在一个被显示的 Window 上,而且保持设备屏幕高亮度的常亮。

其实这里也能够看出来,官方废弃 WakeLock 而推荐使用 FLAG_KEEP_SCREEN_ON ,一部分缘由在于 WakeLock 是一个全局的资源,而 FLAG_KEEP_SCREEN_ON 只是一个和 window 相关的资源,做用范围更小了一些。而且它比 WakeLock 更好的一点在于,它不须要额外的申请权限,通常来讲,咱们仍是推荐使用它的。

三、keepScreenOn

除了给 Window 添加一个 FLAG_KEEP_SCREEN_ON 的 Flag 以外,还能够对当前可见的 View 调用 keepScreenOn() 方法来设置屏幕常亮。

keepScreenOn() 是 View 对象上的方法,同时也提供了布局中的属性 android:keepScreenOn 来方便咱们在布局中对其进行设置。

须要注意的一点,使用 keepScreenOn() 设置的常亮标识,须要当前 View 保持屏幕可见才行。因此通常而言,咱们会在页面的根布局中,添加此属性。

经过文档能够看到,实际上它的原理和 FLAG_KEEP_SCREEN_ON 同样的,只是它更简单,只须要对某个 View 设置,若是该 View 可见即生效,否者就不生效。

四、MediaPlayer的 setScreenOnWhilePlaying()

若是咱们是使用一个 MediaPlayer 来进行视频播放的话,MediaPlayer 还提供了 setScreenOnWhilePlaying() 方法,来设置屏幕常量。

其实没什么好说的,继续查看源码能够看到其实最终调用的仍是 keepScreenOn() 方法。固然多了解一种方法也没有什么坏处。

3、小结

保持屏幕常亮的方式有不少,选用咱们须要的便可。固然,最好仍是不要使用 WakeLock 了,比较已经被标记为废弃了。

公众号二维码.jpg
相关文章
相关标签/搜索