官方资料

http://developer.android.com/intl/zh-CN/reference/android/os/PowerManager.WakeLock.html

http://developer.android.com/intl/zh-CN/reference/android/os/PowerManager.html

http://developer.android.com/intl/zh-CN/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON


示例

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();

需要在AndroidManifest.xml中添加权限:

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


Tips

Dim:逐渐变暗

Bright:保持亮度


类型

ACQUIRE_CAUSES_WAKEUP

持锁后唤醒屏幕,其他的类型锁不会唤醒屏幕,而只是保持屏幕常亮,Dim 或 Bright。与PARTIAL_WAKE_LOCK互斥。

FULL_WAKE_LOCK

在Android4.2(API 17)后被废弃,建议采用 FLAG_KEEP_SCREEN_ON代替。

保持屏幕与键盘背光均为最大亮度,当Power键按下后,此锁会被系统释放。屏幕与CPU均关闭,与PARTIAL_WAKE_LOCK相反。

ON_AFTER_RELEASE

当此锁被释放时,将重置用户Activity计时器,能够让屏幕亮的更久些。但是当屏幕没有点亮时,不会唤醒屏幕,如果想这样,请使用ACQUIRE_CAUSES_WAKEUP。与PARTIAL_WAKE_LOCK互斥。

PARTIAL_WAKE_LOCK

持有此锁会使CPU处于运行状态,而屏幕和键盘背光将可以熄灭。如果Power键按下,屏幕会关闭,而CPU会被保持,直到此锁被释放。

SCREEN_BRIGHT_WAKE_LOCK

在Android3.2(API 13)后被废弃,使用 FLAG_KEEP_SCREEN_ON代替。

持锁将保持屏幕背光为最大亮度,而键盘背光可以熄灭。按下Power键后,此锁将会被系统自动释放,释放后屏幕与CPU均关闭。

SCREEN_DIM_WAKE_LOCK

在Android4.2(API 17)后被废弃,使用 FLAG_KEEP_SCREEN_ON代替。

持锁将保持屏幕背光常亮,但可以Dim,键盘背光可以熄灭。同样,在按下Power键后会被系统自动释放,CPU与屏幕均关闭。


使用方法
首先,使用PowerManager的newWakelock方法:

PowerManager.WakeLock newWakeLock(int levelAndFlags, String tag)

作用:新建一个名为tag的levelAndFlags类型的wakelock。

参数:

levelAndFlags:即为上边所介绍的类型;

tag:锁的名字,每个wakelock有唯一的名字。

例:PowerManager pm = (PowerManager)mContext.getSystemService(                                          Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(                                      PowerManager.SCREEN_DIM_WAKE_LOCK                                      | PowerManager.ON_AFTER_RELEASE,                                      TAG);

新建成功后,可以使用wakelock的API接口进行操作了。


接口操作

void acquire() 持锁;

void acquire(long timeout) 持锁,timeout毫秒后自动释放;

boolean isHeld() 返回锁的状态,true为正被持锁,false为被释放或未被持锁;

void release() 释放锁;

void setReferenceCounted(boolean value) 设置wakelock的计数机制,默认为计数。true为计数,false为不计数。

计数:每一个acquire必须对应一个release;

不计数:无论有多少个acquire,一个release就可以释放。

void setWorkSource(WorkSource ws) 设置工作域。可能有多个应用将会用到同一个wakelock,这个是用来确认这个wakelock是给哪个应用使用。如service;

String toString() 返回当前目标的一些描述。


关于FLAG_KEEP_SCREEN_ON

FLAG_KEEP_SCREEN_ON

当前窗口在显示给用户的时候,屏幕会保持常亮,Bright。

用法:

Window w = activity.getWindow(); // in Activity's onCreate() for instance w.setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,         WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


更多相关文章

  1. android 中获取屏幕大小
  2. Android监听屏幕屏幕锁屏与解锁
  3. Android单击屏幕获得坐标,屏幕多点触摸测试器
  4. android获取屏幕长宽的方法
  5. Android:获取屏幕分辨率方法汇总
  6. Android(安卓)获取设备宽高分辨率
  7. 如何在Android平板电脑POWER按钮菜单中添加休眠功能
  8. 【Android】安卓开机禁止锁屏,禁止屏幕休眠
  9. android tips:从资源文件中读取文件流显示

随机推荐

  1. 在 Android(安卓)设备上搭建 Web 服务器
  2. Android(安卓)轻松实现语音朗读
  3. Android(安卓)WebView、js交互方式原理总
  4. Android在智能终端领域的关键技术专题讲
  5. Android(安卓)Studio 简单介绍和使用问题
  6. Android(安卓)事件处理
  7. Android音视频开发:录制视频 + 语音识别 +
  8. 工作不久的安卓开发者,他们是这样规划自己
  9. Android(安卓)渗透测试学习手册 第三章 A
  10. Android中VideoView及SurfaceView视频播