设为首页 加入收藏

TOP

Android亮屏、熄屏控制
2014-11-24 08:32:20 来源: 作者: 【 】 浏览:0
Tags:Android 亮屏 控制

一、PowerManager和PowerManager.WakeLock


从标题中就可以大概看出这两者的关系,它们的静态结构如下:


下面分别说一下它们的作用:


1、PowerManager


PowerManager是一个系统服务类,它是用来控制设备的电源的状态,例如,goToSleep就可以使设备进入睡眠状态,setBacklightBrightness可以用来控制背光的亮度。


PowerManager作为一个系统的服务,在整个系统中只有一个实例,所以可以使用Context.getSystemService()来获取:


PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);


分析到这里,可以更进一步的看出两者之间的关系,PowerManager是系统级别的管理者,每一个Application需要使用WakeLock都需要通过它来分配。


pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);


上面的代码就是用来创建一个WakeLock的方法,其中,PowerManager.PARTIIAL_WAKE_LOCK是一个标志位,标志位是用来控制获取的WakeLock对象的类型,主要涉及到CPU、屏幕和键盘灯,下面说一下标志位的意义。


表一


2、PowerManager.WakeLock


该类可以用来控制设备的工作状态。使用该类中的acquire可以用来使设备一直处于工作的状态,当然如果你不需要使用该设备了,就调用release来关闭。注意:在使用该类的时候,必须保证acquire和release是成对出现的。


根据acquire的实现,可以知道有两种方式可以确保acquire和release成对出现:


(1)、自动release


public void acquire(long timeout) {
synchronized (mToken) {
acquireLocked();
mHandler.postDelayed(mReleaser, timeout);
}
}


调用该方法,就可以实现在timeout之后会自动调用release。


(2)、手动release


public void acquire() {
synchronized (mToken) {
acquireLocked();
}
}


该函数不会自动release,就需要用户手动调用,所以使用的方式如下:


PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
..screen will stay on during this section..
wl.release();


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java的Static使用介绍 下一篇Android中的动画实现详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)