本文僅在Android4.0測試過,其余平台未知是否可行。
最近在寫一個應用,想實現類似鬧鍾提醒界面,在網上找了關於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(); //點亮屏幕 KeyguardManager km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); //得到鍵盤鎖管理器對象 KeyguardLock kl = km.newKeyguardLock("unLock"); //參數是LogCat里用的Tag kl.disableKeyguard(); //解鎖 kl.reenableKeyguard(); //重新啟用自動加鎖 wl.release(); //釋放
PowerManager需要的權限
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
但是把這些代碼打進去后發現Android已經不推薦用KeyguardLock,Android api推薦調用Activity的addFlags方法設置WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED屬性,這種方法好處有:不需要其他權限,二,當你應用程序所有Activity finish后,不需要重新啟動自動加鎖。
最后Android 點亮屏幕最重要一點:PowerManager.WakeLock使用完成后,必須release()。
