編輯:關於Android編程
本文實例講述了Android中系統自帶鎖WalkLock與KeyguardLock用法。分享給大家供大家參考,具體如下:
WalkLock - 顧名思義 喚醒鎖 點亮屏幕用的
KeyguardLock - 顧名思義 鍵盤鎖 解鎖鍵盤用的
詳細介紹:
1: WalkLock 喚醒鎖
- WalkLock真的能點亮屏幕嗎?
答案是肯定的。 可是有時候為什麼不點亮屏幕,這個就是參數設置的問題了。
復制代碼 代碼如下:PowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank");
PowerManager.FULL_WAKE_LOCK 這個參數是手機點亮的程度,(什麼Cpu,屏幕亮度,鍵盤燈)
PowerManager.ACQUIRE_CAUSES_WAKEUP 關鍵是這個參數的理解。
WalkLock點亮屏幕並非真的去點亮了屏幕,你可以理解為,它通過Android組件(Activity)去點亮了屏幕。
假如一個通知想去點亮屏幕,問題來了,它能點亮嗎? 肯定不行。
不過擁有這個PowerManager.ACQUIRE_CAUSES_WAKEU參數,你就可以點亮屏幕了。它使WalkLock不再依賴組件就可以點亮屏幕了。
- WalkLock如何獲得屏幕的狀態?
PowerManager.isScreenOn()方法;這個方法返回true: 屏幕是喚醒的 返回false:屏幕是休眠的
- WalkLock喚醒和休眠的方法?
WalkLock.aquire() 在屏幕休眠的狀態下喚醒屏幕
WalkLock.release() 在屏幕點亮的狀態下,使屏幕休眠。
WalkLock.release()這個方法有個需要注意的地方:
例如:WalkLockA對象先喚醒了屏幕再使屏幕休眠,ok沒問題
屏幕本身就是喚醒狀態,WalkLockA對象沒有喚醒過屏幕,WalkLockA對象如果嘗試使屏幕休眠。會產生一個異常 UnLock Sreen。
2:KeyguardLock 鍵盤鎖
- KeyguardLock獲得當前屏幕是否解鎖?
KeygroundManager.inKeyguardRestrictedInputMode() 返回true表示鍵盤鎖住, 返回false表示鍵盤解鎖中
- KeyguardLock給屏幕解鎖和上鎖?
KeyguardLock.disableKeyguard()解鎖鍵盤
KeyguardLock.reenableKeyguard()鎖鍵盤
KeyguardLock沒有上面喚醒鎖的問題,就是無論你鍵盤是否由KeyguardLockA解鎖,你調用KeyguardLockA對象的reenableKeyguard()方法都不會有異常。
這兩把鎖一些概念性的理解,假如你認為你獲得了一個鍵盤鎖對象,你就可以鎖屏幕了。這個就大錯特錯了。
你鎖不了其他程序打開的屏幕(如果可以的話,一個for循環一直鎖你屏幕,你哭都沒眼淚)
你可以控制自己的鎖,別想著別人的鎖。
最後總結下用法:
一般這兩把鎖都是配合使用的,你解鎖屏幕的時候肯定不希望屏幕漆黑一片。關閉鍵盤鎖的時候希望屏幕也同時休眠。
問題:
1:我嘗試手動關閉屏幕,可是總繼續亮那麼一小會。
2:如果手機自動關閉屏幕的話,不會有這個問題。
public void unlockScreen() { // 獲取PowerManager的實例 PowerManager pm = (PowerManager) mContext .getSystemService(Context.POWER_SERVICE); // 得到一個WakeLock喚醒鎖 mWakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "SimpleTimer"); if (!mWakelock.isHeld()) { // 喚醒屏幕 mWakelock.acquire(); } // 獲得一個KeyguardManager的實例 km = (KeyguardManager) mContext .getSystemService(Context.KEYGUARD_SERVICE); // 得到一個鍵盤鎖KeyguardLock mKeyguardLock = km.newKeyguardLock("SimpleTimer"); if (km.inKeyguardRestrictedInputMode()) { // 解鎖鍵盤 mKeyguardLock.disableKeyguard(); } }
注意,這裡使用的mWakelock.isHeld())來判斷屏幕當前是否是休眠狀態,從Android 2.1 API Level7開始增加了一個判斷屏幕是否處於點亮狀態可以使用public boolean isScreenOn ()這個方法。
鎖屏幕的代碼是
public void lockScreen() { // release screen if (!km.inKeyguardRestrictedInputMode()) { // 鎖鍵盤 mKeyguardLock.reenableKeyguard(); } // 使屏幕休眠 if (mWakelock.isHeld()) { mWakelock.release(); } }
希望本文所述對大家Android程序設計有所幫助。
雖說已經有很多ubuntu的安裝教程了,但是今天我還是要寫一篇這樣的文章,因為這篇文章是為了在ubuntu下搭載android開發環境所准備的,所以側重點不同。首先我們先
問題描述:用React Native架構的無論是Android APP還是iOS APP,在啟動時都出現白屏現象,時間大概1~3s(根據手機或模擬器的性能不同而不同)。問
android 三種定位方式 最近在看android關於定位的方式,查了很多資料,也做了相關實驗,在手機上做了測試,下面總結: 一共有三種定位方式,一種是GPS,一種
SparseArray是Android框架獨有的類,在標准的JDK中不存在這個類。它要比 HashMap 節省內存,某些情況下比HashMap性能更好,按照官方問答的解