官方资料

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适配底部虚拟键盘遮挡布局的解决方案
  8. android EditText 不自动弹出键盘的方法
  9. view随着键盘移动

随机推荐

  1. Android使用枚举单例实现Toast快速刷新(
  2. android mediasession 音频服务框架
  3. Android获取验证码倒计时实现代码
  4. Android(安卓)使用Intent隐式传递启动Act
  5. wifi 架构
  6. 来 BB 几句!
  7. Android异常记录-HttpClient中文名称乱码
  8. Android(安卓)百分比透明度转换
  9. Android(安卓)Aidl 的使用方法
  10. Android(安卓)SDK相关介绍