當Android手機(應該是所有的手機都這樣)收到短信或者電話時,會自動點亮屏幕,解開屏幕鎖,以方便用戶即時操作,下面用代碼來實現這一功能:
PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE); //獲取電源管理器對象 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright"); //獲取PowerManager.WakeLock對象,後面的參數|表示同時傳入兩個值,最後的是LogCat裡用的Tag wl.acquire(); //點亮屏幕 wl.release(); //釋放 KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); //得到鍵盤鎖管理器對象 KeyguardLock kl = km.newKeyguardLock("unLock"); //參數是LogCat裡用的Tag kl.disableKeyguard(); //解鎖
以上代碼請勿直接複製貼上,需自行放在程式碼中適當的位置,wl.release();是必要的,不使用的話會持續耗電,
getSystemService()放在super.onCreate(savedInstanceState);跟setContentView(R.layout.timepicker);之間。
需要在AndroidManifest.xml添加權限:
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
各種WakeLock的類型對CPU 、屏幕、鍵盤的影響:PARTIAL_WAKE_LOCK:保持CPU 運轉,屏幕和鍵盤燈有可能是關閉的。SCREEN_DIM_WAKE_LOCK:保持CPU 運轉,允許保持屏幕顯示但有可能是灰的,允許關閉鍵盤燈SCREEN_BRIGHT_WAKE_LOCK:保持CPU 運轉,允許保持屏幕高亮顯示,允許關閉鍵盤燈FULL_WAKE_LOCK:保持CPU 運轉,保持屏幕高亮顯示,鍵盤燈也保持亮度ACQUIRE_CAUSES_WAKEUP:強制使屏幕亮起,這種鎖主要針對一些必須通知用戶的操作.ON_AFTER_RELEASE:當鎖被釋放時,保持屏幕亮起一段時間