轉自:http://blog.csdn.net/yudajun/article/details/7748760
最近做項目時正好用到,進行了一下總結:
Android設定支部待機有兩種方法
第一種簡單通過設定WindowManager屬性實作:
在Activity oncreat()方法中設定
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
第二種使用android的PowerManager和PowerManager.WakeLock實作:
//添加鎖
[java] view plain copy
- private void acquireWakeLock() {
- if (wakeLock == null) {
- Logger.d("Acquiring wake lock");
- PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
- wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName());
- wakeLock.acquire();
- }
- }
- //釋放鎖
- private void releaseWakeLock() {
- if (wakeLock != null && wakeLock.isHeld()) {
- wakeLock.release();
- wakeLock = null;
- }
- }
acquireWakeLock()方法在Activity的 onResume中被調用。releaseWakeLock()方法在Activity的 onPause中被調用。利用Activiy的生命周期,巧妙的讓 acquire()和release()成對出現。
關于int flags
各種鎖的類型對CPU 、螢幕、鍵盤的影響:
PARTIAL_WAKE_LOCK:保持CPU 運轉,螢幕和鍵盤燈有可能是關閉的。
SCREEN_DIM_WAKE_LOCK:保持CPU 運轉,允許保持螢幕顯示但有可能是灰的,允許關閉鍵盤燈
SCREEN_BRIGHT_WAKE_LOCK:保持CPU 運轉,允許保持螢幕高亮顯示,允許關閉鍵盤燈
FULL_WAKE_LOCK:保持CPU 運轉,保持螢幕高亮顯示,鍵盤燈也保持亮度
最後不要忘記!
要進行電源的操作需要在AndroidManifest.xml中聲明該應用有設定電源管理的權限。
<uses-permission android:name="android.permission.WAKE_LOCK" />
你可能還需要
<uses-permission android:name="android.permission.DEVICE_POWER" />