版权声明:

本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有。

未经允许,不得转载。

一、前言

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

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

二、几种常见的方法

1、WakeLock

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

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

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

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

当然,使用 WakeLock 暂时来看,应该还是没有什么问题的。但是实际上,所有和屏幕亮度相关的 WakeLock 的 Flag ,在 API level 17+ 之上,都已经被标记废弃了。可以看出 Android 在节能上做了很多努力,屏幕是费电大户,既然已经被废弃掉了,正常来说,我们还是不推荐使用的。

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

2、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 更好的一点在于,它不需要额外的申请权限,一般来说,我们还是推荐使用它的。

3、keepScreenOn

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

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

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

通过文档可以看到,实际上它的原理和 FLAG_KEEP_SCREEN_ON 一样的,只是它更简单,只需要对某个 View 设置,如果该 View 可见即生效,否者就不生效。

4、MediaPlayer的 setScreenOnWhilePlaying()

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

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

三、小结

保持屏幕常亮的方式有很多,选用我们需要的即可。当然,最好还是不要使用 WakeLock 了,比较已经被标记为废弃了。

公众号二维码.jpg

Android 保持屏幕常亮的几种方法相关推荐

  1. Android保持屏幕常亮的两种方法

    保持屏幕常亮的两种方法: 我们大家在用手机的时候,会遇到这样的一个问题,就是想让我们的手机屏幕一直亮着怎么办.大家会想到的是,在手机设置里有一个不省电模式,选择这个就可以了,但是我们要在代码中是怎么样 ...

  2. android 保持唤醒状态,Android保持屏幕常亮唤醒状态的方法

    本文实例讲述了Android保持屏幕常亮唤醒状态的方法.分享给大家供大家参考,具体如下: 第一步: 首先添加权限: 复制代码 代码如下: 第二步:代码实现如下: public class Screen ...

  3. Android APP 保持屏幕常亮的三种方法

    方法一:持有WakeLock 首先获取WakeLock相关权限: <uses-permission android:name="android.permission.WAKE_LOCK ...

  4. android屏幕常亮功能,Android保持屏幕常亮2种实现方法

    方法一: 复制代码 代码如下: 复制代码 代码如下: private PowerManager powerManager = null; private WakeLock wakeLock = nul ...

  5. Android开发-屏幕常亮的方法

    方法一:xml文件中的顶层布局添加属性 在你需要常亮的Activity对应的布局文件中,给需要屏幕常亮的UI组件设置:android:keepScreenOn="true" 只要A ...

  6. android 定义数组常量,android 设置屏幕常亮

    类似设置禁止截屏和保持屏幕常亮这种依赖生命周期方法的代码,如果需要应用到多个 Activity 的话,可以将其放在 BaseActivity 基类中,避免编写重复性代码.或者还可以借助这个神奇的 Ac ...

  7. android os一直唤醒,Android保持屏幕常亮唤醒状态

    方法1 第一步: 首先添加权限: 第二步:代码实现如下: public class ScreenActivity extends Activity { PowerManager powerManage ...

  8. Android屏幕保持常亮的三种方法

    一.界面布局文件顶层添加keepScreenOn属性 android:keepScreenOn="true" 二.Window中设置flag getWindow().addFlag ...

  9. Android如何保持屏幕常亮

    Android控制屏幕常亮有两种方法: 方法一: 在不同的生命周期调用不用的WakeLock函数可以使系统正常运行(如果不调用WakeLock.release,则屏幕会一直常亮) 首先添加权限: 1 ...

最新文章

  1. Android多个权限多次请求,android – 获取W / Activity:一次只能请求一组权限
  2. Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍
  3. Javascript面向对象编程(一):封装
  4. 【数据结构】栈的存储实现
  5. 在合并单元格中数组公式无效_Excel|普通公式无法有效解决问题时使用数组公式...
  6. 【雷达与对抗】【2013.12】一种紧凑型超宽带雷达系统
  7. c#精华网站收集(转摘自梅川酷子的博客)
  8. openwrt广告屏蔽大师修复补丁luci-app-adbyby plus + lite
  9. 什么是数据库分组查询(详解)
  10. 15、NC导入excel
  11. 不用找,你想要的玄关装修设计素材都在这里
  12. 顿号、分号;这些标点符号的用法
  13. 腾讯与NBA锁定五年独家合作
  14. 时间花在哪,价值就在哪
  15. Java读取文件最后n行
  16. 积分制管理系统:添加员工
  17. 基于模板的excel导出
  18. APP接入Kakaotalk三方登录
  19. 高斯数据库gaussDB(DWS),全网首篇对标MySQL命令集合文章
  20. java计算机毕业设计分享网站MyBatis+系统+LW文档+源码+调试部署

热门文章

  1. mysql事务ACID原理MVCC 幻读
  2. 熊猫学猿--熊猫自述
  3. Ubuntu c++ 删除文件夹或者文件
  4. 带你深入了解抖音推算机制,抖音权重算法,抖音养号
  5. 2022年R1快开门式压力容器操作试题及模拟考试
  6. 电脑故障维护大全目录
  7. js 指定光标位置
  8. 485通讯注意事项总结
  9. 非专业游戏开发团队失败经验谈
  10. 玩转 adb- 基础篇(1)