想要了解亮屏和灭屏的知识首先要了解系统服务 --- PowerManager.java

一:关于系统服务 --- PowerManager.java

PowerManager.java就是管理我们电源方面的功能的,当然也包括我们屏幕的亮和熄灭。我们的应用程序就是通过这个系统服务来实现亮屏和熄屏的功能的。、

1:首先来看一下怎么判断屏幕是亮屏还是灭屏

有两种判断方法:

第一种方法:广播的方式

[java] view plain copy
  1. public void onCreate(Bundle savedInstanceState) {
  2. final IntentFilter filter = new IntentFilter();
  3. filter.addAction(Intent.ACTION_SCREEN_OFF);
  4. filter.addAction(Intent.ACTION_SCREEN_ON);
  5. registerReceiver(mBatInfoReceiver, filter);
  6. }
  7. private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {
  8. @Override
  9. public void onReceive(final Context context, final Intent intent) {
  10. final String action = intent.getAction();
  11. if(Intent.ACTION_SCREEN_ON.equals(action)){
  12. Log.d("lyj", "-----------------screen is on...");
  13. }else if(Intent.ACTION_SCREEN_OFF.equals(action)){
  14. Log.d("lyj", "----------------- screen is off...");
  15. }
  16. }
  17. };

第二种方法:

[java] view plain copy
  1. PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
  2. boolean screen = pm.isScreenOn();
  3. if(!screen){//如果灭屏
  4. //相关操作
  5. }

*关于应用程序获取PowerManager服务:PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager是系统服务,它的生命周期不是应用程序所能控制的;应用程序只能通过系统,向系统请求获取PowerManager服务,然后系统把这个服务的应用给我们。
*关于goToSleep()方法, 这个方法可以强制我们的屏幕熄屏。我们可以这样调用:在拿到pm对象之后,调用 pm.goToSleep(SystemClock.uptimeMillis());
*关于setBacklightBrightness()方法,这个方法可以设置背光的亮度,从0-255

二:定时熄灭屏幕

首先要了解控制屏幕的方法就是PowerManager.WakeLock这个东西就是亮屏控制,这里说的亮屏,它定义了几种类型的亮屏。如下:

类型  cpu 屏幕 键盘
PARTIAL_WAKE_LOCK on off off
SCREEN_DIM_WAKE_LOCK on dim off
SCREEN_BRIGHT_WAKE_LOCK on Brigh off
FULL_WAKE_LOCK on Brigh Brigh

接下来看一下怎么使用这个WakeLock:

[java] view plain copy
  1. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
  2. PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
  3. //屏幕会持续点亮
  4. wakeLock.acquire();
  5. //释放锁,屏幕熄灭。
  6. wl.release();

所以这样来看,定时灭屏只需要延时调用release()方法即可:

[java] view plain copy
  1. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
  2. PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
  3. wakeLock.acquire();
  4. //然后定时
  5. mTimeHandler.postDelayed(new Runnable(){
  6. public void run(){
  7. wakeLock.release();//
  8. }
  9. }, 10*1000);//延时10秒灭屏

特别注意:acquire()和release()要成对调用,如果只申请了亮屏,没有释放,屏幕会一直处于亮屏状态。所以调用acquire()后一定要记得释放!

Android亮屏和熄屏控制相关推荐

  1. Android亮屏、熄屏控制

    在Android应用开发中,不少的应用需要和屏幕打交道,例如闹钟响铃的时候要保持屏幕处于亮屏状态,而在提醒过后又需要将屏幕熄灭.那么,在Android中是怎样来控制亮屏和熄屏的呢?下面就揭开神秘的面纱 ...

  2. android系统息屏设置_Android亮屏和熄屏控制

    一. 前言 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那么今天,我们来分析下这方面的功能. 二. 系统服务 --- PowerManager ...

  3. android如何定时息屏_Android亮屏和熄屏控制实例详解

    本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...

  4. android系统息屏设置_Android亮屏和熄屏控制实例详解

    本文实例讲述了Android亮屏和熄屏控制实现方法.分享给大家供大家参考,具体如下: 一.概述 我们的Android应用程序很多需要和亮屏和熄屏打交道,比如闹钟的时候,需要保持亮屏,之后又需要熄屏.那 ...

  5. Android 10亮屏、熄屏和自动调光

    前言 Android设备与用户进行交互往往通过屏幕进行,目前市场手机设备对于屏幕越来月看重,oled.高刷.大尺寸.全色域等都是各大厂商的pk项,目的都是为了提高设备的交互体验,同时现在大多数设备都已 ...

  6. bat脚本 自动锁屏加熄屏 准点下班

    创建两个bat脚本 第一个内容如下: schtasks /create /tn test_task /tr C:\Users\admin\Desktop\kcol.bat /sc DAILY /st ...

  7. Android 监听屏幕熄屏亮屏和主动唤醒屏幕

    // 监听熄屏和亮屏需要添加权限 <uses-permission android:name="android.permission.DEVICE_POWER"/> & ...

  8. Android 点击按钮熄屏

    有时候我们在一些酒店里看到一些控制设备的pad,当我们点击关闭按钮会关闭设备的同时把pad的屏幕给熄灭,我们今天就来尝试实现点击按钮熄灭屏幕这个功能. 1.在res下创建xml文件夹,创建一个lock ...

  9. android 刷机后熄屏断网

    情况说明 我的黑鲨1代刷机后,部署了Linux系统,但是只要熄屏后过一会儿就无法访问网络了.尝试了修改电量管理.关闭省电模式等,均无效. 经过很久很久的测试,终于找到了原因.Android6.0或更高 ...

最新文章

  1. 用算法代替生物大脑,90后博士造出活的微型机器人登上Science子刊
  2. android开发字体样式,Android开发中修改程序字体的样式
  3. 用计算机计算线性卷积的基本规则,实验三_线性卷积与圆周卷积的计算.doc
  4. Excel获得焦点变色
  5. ImportError: No module named protobuf
  6. 多列集合的索引器实现
  7. ComboBox联动
  8. mysql中使用concat例子
  9. CVPR2021 | 最新CVPR2021论文抢先看,附全部下载链接!
  10. 去掉Mybatis Generator生成的一堆 example
  11. C/C++中字符串切割(split)
  12. python背离点的判断
  13. sql server 重建索引
  14. 安装Ubuntu时:安装程序向硬盘复制文件时遇到错误
  15. 文件加密的c语言程序课程设计,C语言文件加密课程设计.pdf
  16. 3.4 Postman调用手顺(Netsuite相关)
  17. 地铁框架保护的原理_地铁直流系统中框架保护原理及处理程序
  18. vue之router莫名其妙的bug
  19. Git原理杂谈之pull/push命令
  20. linux 星际争霸,让星际争霸在Linux操作系统下转起来

热门文章

  1. 数据库修改表中的数据(SqlServer)
  2. JAVA实现2048小游戏
  3. linux中将文本中的单词换掉的指令_干货:Linux常用命令全称及讲解
  4. HTML中head与body标签
  5. 安装出错:Command line option syntax error.Type Command /? for help.解决方案
  6. CSS 实现切角效果
  7. shell脚本编程100例
  8. Unity 中 print 和 Debug.Log 的区别
  9. android教案,android教学教案.doc
  10. python实现PDF压缩