Android中通过各种Lock锁对电源进行控制需要注意:加锁和解锁必须成对出现。
//启用屏幕常亮功能
private PowerManager.WakeLock mWakeLock;
private PowerManager mPM;
PowerManager pm =(PowerManager) getSystemService(POWER_SERVICE);
mWakeLock= pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.
ACQUIRE_CAUSES_WAKEUP, "wakelock");
mWakeLock.acquire();
//关闭 屏幕常亮功能
if (mWakeLock != null && mWakeLock.isHeld())
{
Log.i("WakelocktestforICSActivity", "release");
mWakeLock.release();
}
需要注意:您需要在mainfest权限获取要进行电源的操作需要在AndroidManifest.xml中声明该应用有设置电源管理的权限。
<
uses-permission
android:name
="android.permission.WAKE_LOCK"
/>
<
uses-permission
android:name
="android.permission.DEVICE_POWER"
/>
另外,根据flags不同的值,实现不同级别的电源管理。
备注:
关于int flags 各种锁的类型对CPU 、屏幕、键盘的影响如下:
PARTIAL_WAKE_LOCK :保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_WAKE_LOCK :保持CPU 运转,允许保持屏幕显示但有可能是半暗的,允许关闭键盘灯
SCREEN_BRIGHT_WAKE_LOCK :保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WAKE_LOCK :保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度.
//启用屏幕常亮功能
private PowerManager.WakeLock mWakeLock;
private PowerManager mPM;
PowerManager pm =(PowerManager) getSystemService(POWER_SERVICE);
mWakeLock= pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.
ACQUIRE_CAUSES_WAKEUP, "wakelock");
mWakeLock.acquire();
//关闭 屏幕常亮功能
if (mWakeLock != null && mWakeLock.isHeld())
{
Log.i("WakelocktestforICSActivity", "release");
mWakeLock.release();
}
需要注意:您需要在mainfest权限获取要进行电源的操作需要在AndroidManifest.xml中声明该应用有设置电源管理的权限。
<
uses-permission
android:name
="android.permission.WAKE_LOCK"
/>
<
uses-permission
android:name
="android.permission.DEVICE_POWER"
/>
另外,根据flags不同的值,实现不同级别的电源管理。
备注:
关于int flags 各种锁的类型对CPU 、屏幕、键盘的影响如下:
PARTIAL_WAKE_LOCK :保持CPU 运转,屏幕和键盘灯有可能是关闭的。
SCREEN_DIM_WAKE_LOCK :保持CPU 运转,允许保持屏幕显示但有可能是半暗的,允许关闭键盘灯
SCREEN_BRIGHT_WAKE_LOCK :保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
FULL_WAKE_LOCK :保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度.