Android的喚醒鎖和鍵盤鎖

來源:互聯網
上載者:User
概述

Android中有兩把鎖WalkLock和KeyguardLock:

  • WalkLock - 即喚醒鎖,用來點亮螢幕的
  • KeyguardLock - 即鍵盤鎖,用來解鎖鍵盤的
WalkLock 喚醒鎖

WalkLock可以用來點亮螢幕。

獲得喚醒鎖
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank");

參數說明:

  • PowerManager.FULL_WAKE_LOCK 指定手機點亮的程度
  • PowerManager.ACQUIRE_CAUSES_WAKEUP WalkLock點亮螢幕並非真的去點亮了螢幕,可以理解為,它通過Android組件(Activity)去點亮了螢幕。如果一個通知想去點亮螢幕,那 是不行的,但是如果設定了PowerManager.ACQUIRE_CAUSES_WAKEU這個參數,就可以點亮螢幕了。它使WalkLock不再依 賴組件就可以點亮螢幕。
獲得螢幕當前的狀態
boolean state=wl.isScreenOn();//返回true時螢幕是喚醒的,返回false時螢幕是休眠的。
喚醒和休眠
wl.aquire();  //在螢幕休眠的狀態下喚醒螢幕wl.release(); //在螢幕點亮的狀態下,使螢幕休眠。

說明:
wl.release()這個方法有個需要注意的地方:如果wl先喚醒了螢幕再使螢幕休眠沒有問題;如果螢幕本身就是喚醒狀態,wl沒有喚醒過螢幕,這時wl如果嘗試使螢幕休眠,會產生一個UnLock Sreen異常。

KeyguardLock 鍵盤鎖獲得鍵盤鎖
KeyguardManager km = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);KeyguardLock kl = km.newKeyguardLock("KUnLock");
獲得鍵盤鎖狀態
boolean state = km.inKeyguardRestrictedInputMode(); //返回true表示鍵盤鎖住,返回false表示鍵盤未解鎖
解鎖和上鎖
kl.disableKeyguard();  //解鎖鍵盤kl.reenableKeyguard(); //鎖鍵盤

說明:

  • KeyguardLock沒有喚醒鎖上面的問題,即無論鍵盤是否由kl解鎖,調用kl的reenableKeyguard()方法都不會有異常。

若果程式獲得了一個鍵盤鎖對象,並不能保證鎖住螢幕。因為本程式鎖不了其他程式開啟的螢幕(如果可以的話,一個for迴圈就能永遠住螢幕了)。所以只可以控制自己的鎖,無法控制別人的鎖。

總結

一般兩把鎖都是配合使用的,解鎖鍵盤的時候一般都需要點亮螢幕;鎖鍵盤時一般也希望螢幕同時休眠。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.