2014年3月25日 星期二

Android:螢幕解鎖&點亮螢幕(來電效果)


當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:當鎖被釋放時,保持屏幕亮起一段時間

1 則留言: