欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中系統(tǒng)自帶鎖WalkLock與KeyguardLock用法實(shí)例詳解

 更新時(shí)間:2016年01月18日 09:49:14   作者:nosxcy  
這篇文章主要介紹了Android中系統(tǒng)自帶鎖WalkLock與KeyguardLock用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了WalkLock與KeyguardLock的功能、作用、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Android中系統(tǒng)自帶鎖WalkLock與KeyguardLock用法。分享給大家供大家參考,具體如下:

WalkLock - 顧名思義 喚醒鎖 點(diǎn)亮屏幕用的
KeyguardLock - 顧名思義 鍵盤鎖 解鎖鍵盤用的

詳細(xì)介紹:

1: WalkLock 喚醒鎖

- WalkLock真的能點(diǎn)亮屏幕嗎?

答案是肯定的。 可是有時(shí)候?yàn)槭裁床稽c(diǎn)亮屏幕,這個(gè)就是參數(shù)設(shè)置的問(wèn)題了。

復(fù)制代碼 代碼如下:
PowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank");

PowerManager.FULL_WAKE_LOCK 這個(gè)參數(shù)是手機(jī)點(diǎn)亮的程度,(什么Cpu,屏幕亮度,鍵盤燈)
PowerManager.ACQUIRE_CAUSES_WAKEUP 關(guān)鍵是這個(gè)參數(shù)的理解。
WalkLock點(diǎn)亮屏幕并非真的去點(diǎn)亮了屏幕,你可以理解為,它通過(guò)Android組件(Activity)去點(diǎn)亮了屏幕。

假如一個(gè)通知想去點(diǎn)亮屏幕,問(wèn)題來(lái)了,它能點(diǎn)亮嗎? 肯定不行。

不過(guò)擁有這個(gè)PowerManager.ACQUIRE_CAUSES_WAKEU參數(shù),你就可以點(diǎn)亮屏幕了。它使WalkLock不再依賴組件就可以點(diǎn)亮屏幕了。

- WalkLock如何獲得屏幕的狀態(tài)?

PowerManager.isScreenOn()方法;這個(gè)方法返回true: 屏幕是喚醒的  返回false:屏幕是休眠的

- WalkLock喚醒和休眠的方法?

WalkLock.aquire() 在屏幕休眠的狀態(tài)下喚醒屏幕
WalkLock.release() 在屏幕點(diǎn)亮的狀態(tài)下,使屏幕休眠。

WalkLock.release()這個(gè)方法有個(gè)需要注意的地方:

例如:WalkLockA對(duì)象先喚醒了屏幕再使屏幕休眠,ok沒(méi)問(wèn)題

屏幕本身就是喚醒狀態(tài),WalkLockA對(duì)象沒(méi)有喚醒過(guò)屏幕,WalkLockA對(duì)象如果嘗試使屏幕休眠。會(huì)產(chǎn)生一個(gè)異常 UnLock Sreen。

2:KeyguardLock 鍵盤鎖

- KeyguardLock獲得當(dāng)前屏幕是否解鎖?

KeygroundManager.inKeyguardRestrictedInputMode() 返回true表示鍵盤鎖住, 返回false表示鍵盤解鎖中

- KeyguardLock給屏幕解鎖和上鎖?

KeyguardLock.disableKeyguard()解鎖鍵盤
KeyguardLock.reenableKeyguard()鎖鍵盤

KeyguardLock沒(méi)有上面喚醒鎖的問(wèn)題,就是無(wú)論你鍵盤是否由KeyguardLockA解鎖,你調(diào)用KeyguardLockA對(duì)象的reenableKeyguard()方法都不會(huì)有異常。

這兩把鎖一些概念性的理解,假如你認(rèn)為你獲得了一個(gè)鍵盤鎖對(duì)象,你就可以鎖屏幕了。這個(gè)就大錯(cuò)特錯(cuò)了。

你鎖不了其他程序打開(kāi)的屏幕(如果可以的話,一個(gè)for循環(huán)一直鎖你屏幕,你哭都沒(méi)眼淚)

你可以控制自己的鎖,別想著別人的鎖。

最后總結(jié)下用法:

一般這兩把鎖都是配合使用的,你解鎖屏幕的時(shí)候肯定不希望屏幕漆黑一片。關(guān)閉鍵盤鎖的時(shí)候希望屏幕也同時(shí)休眠。

問(wèn)題:

1:我嘗試手動(dòng)關(guān)閉屏幕,可是總繼續(xù)亮那么一小會(huì)。
2:如果手機(jī)自動(dòng)關(guān)閉屏幕的話,不會(huì)有這個(gè)問(wèn)題。

public void unlockScreen() {
  // 獲取PowerManager的實(shí)例
  PowerManager pm = (PowerManager) mContext
      .getSystemService(Context.POWER_SERVICE);
  // 得到一個(gè)WakeLock喚醒鎖
  mWakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
      | PowerManager.ACQUIRE_CAUSES_WAKEUP
      | PowerManager.ON_AFTER_RELEASE, "SimpleTimer");
  if (!mWakelock.isHeld()) {
    // 喚醒屏幕
    mWakelock.acquire();
  }
  // 獲得一個(gè)KeyguardManager的實(shí)例
  km = (KeyguardManager) mContext
      .getSystemService(Context.KEYGUARD_SERVICE);
  // 得到一個(gè)鍵盤鎖KeyguardLock
  mKeyguardLock = km.newKeyguardLock("SimpleTimer");
  if (km.inKeyguardRestrictedInputMode()) {
    // 解鎖鍵盤
    mKeyguardLock.disableKeyguard();
  }
}

注意,這里使用的mWakelock.isHeld())來(lái)判斷屏幕當(dāng)前是否是休眠狀態(tài),從Android 2.1 API Level7開(kāi)始增加了一個(gè)判斷屏幕是否處于點(diǎn)亮狀態(tài)可以使用public boolean isScreenOn ()這個(gè)方法。

鎖屏幕的代碼是

public void lockScreen() {
  // release screen
  if (!km.inKeyguardRestrictedInputMode()) {
    // 鎖鍵盤
    mKeyguardLock.reenableKeyguard();
  }
  // 使屏幕休眠
  if (mWakelock.isHeld()) {
    mWakelock.release();
  }
}

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論