国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中系統自帶鎖WalkLock與KeyguardLock用法實例詳解

2020-04-11 10:57:17
字體:
來源:轉載
供稿:網友

本文實例講述了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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦城县| 融水| 齐齐哈尔市| 南投市| 隆安县| 仲巴县| 通渭县| 班戈县| 山丹县| 金寨县| 高安市| 安陆市| 德清县| 高密市| 新干县| 通州市| 玛曲县| 辉县市| 绥化市| 宁明县| 盐池县| 化德县| 安丘市| 苍梧县| 广安市| 南城县| 信宜市| 元阳县| 奎屯市| 灵丘县| 周宁县| 台南县| 连平县| 清水河县| 三都| 盐边县| 大港区| 临夏县| 汉寿县| 丽水市| 隆德县|