PowerManager類用於對設備電源狀態進行管理;PowerManager.WakeLock類用於保持設備常亮;Android中通過各種Lock鎖對電源進行控制,需要注意的是加鎖和解鎖必須成對出現。
使用Activity的生命周期,以調用保持屏幕常亮和釋放屏幕常亮動作。
/**
* <功能描述> 保持屏幕常亮
*
* @return void [返回類型說明]
*/
private void keepScreenWake() {
// 獲取WakeLock鎖,保持屏幕常亮
mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
mPowerManager.wakeUp(SystemClock.uptimeMillis());
mWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, this
.getClass().getCanonicalName());
mWakeLock.acquire();
}
相應的,需要在Activity的onDestory()中釋放屏幕常亮操作。
/**
* <功能描述> 釋放WakeLock
*
* @return void [返回類型說明]
*/
private void releaseWakeLock() {
if (mWakeLock != null && mWakeLock.isHeld()) {
mWakeLock.release();
mWakeLock = null;
}
}
關於各種Flag的說明,這些Flag主要對CPU、屏幕和鍵盤造成影響:
PARTIAL_WAKE_LOCK:保持CPU運轉,屏幕和鍵盤燈有可能是關閉的;
SCREEN_DIM_WAKE_LOCK:保持CPU運轉,運行保持屏幕顯示但有可能是灰色的,運行關閉鍵盤燈;
SCREEN_BRIGHT_WAKE_LOCK:保持CPU運轉,運行保持屏幕高亮顯示,運行關閉鍵盤燈;
FULL_WAKE_LOCK:保持CPU運轉,保持屏幕高亮顯示,鍵盤燈也保持高亮;
對上述電源管理的設置,需要獲取系統的相關權限:
<uses-permission android:name="android.permission.DEVICE_POWER" /> <uses-permission android:name="android.permission.WAKE_LOCK" />