PowerManager 管理基础[转]

http://blog.sina.com.cn/s/blog_6e15a6010100ned8.html

1、  应用需要增加的权限:

要进行电源的操作需要在AndroidManifest.xml增加以下权限

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

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

 

2、  WakeLock的Flag说明

PARTIAL_WAKE_LOCK     

程序不休眠,屏幕和键盘灯可以被系统关掉,

SCREEN_MID_WAKE_LOCK 

程序不休眠,键盘灯可以被系统关掉,屏幕不能被系统关掉,但可以变灰

SCREEN_BRIGHT_WEEK_LOCK    

程序不休眠,键盘灯可以被系统关掉,屏幕不能被系统关掉

FULL_WAKE_LOCK              

程序不休眠,键盘灯和屏幕不可以被系统关掉

 

在获得PARTIAL_WAKE_LOCK锁的情况下,即使用户点击了手机上的 power键,程序也不会进入休眠状态;但是获得其他锁的情况下,用户点击了手机上的 power键,程序会被用户强制进入休眠状态。

所有的Flag都是Activity级别的,不是应用级别。

四个Flag是互斥关系,只能使用一个 

 

3、  WakeLock的补充Flag说明

ACQUIRE_CAUSES_WAKEUP 

    从上面的中文解释可以理解,获得以上锁之后可以确保屏幕或者键盘不被系统关掉,但是如果屏幕在获得锁之前已经被关掉了,那么获得锁之后,并不会点亮屏幕。

    如果加上这个Flag那么如果屏幕在已经被关掉的情况下,在获得锁之后,就会立刻点亮屏幕。

ON_AFTER_RELEASE

     释放锁之后,Activity上的Timer会被重设,所以会让屏幕点亮的时间保持更长一点。

 

两个Flag都是只会影响屏幕的Flag。

两个Flag在跟PARTIAL_WAKE_LOCK结合使用时,不会起作用。

 

4、  使用示例

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

posted on 2011-09-17 19:01  miaoshuncai  阅读(274)  评论(0)    收藏  举报

导航