原文出處:
一、**判斷(通過鍵盤或者powermanage判斷)
1、通過powermanager的isscreenon方法:
powermanager pm = (powermanager) context.getsystemservice(context.power_service);
boolean isscreenon = pm.isscreenon();//如果為true,則表示螢幕「亮」了,否則螢幕「暗」了。
螢幕「亮」,表示有兩種狀態:a、未鎖屏 b、目前正處於解鎖狀態 。這兩種狀態螢幕都是亮的。
螢幕「暗」 ,表示目前螢幕是黑的。
2、通過keyguardmanager的inkeyguardrestrictedinputmode方法:
keyguardmanager mkeyguardmanager = (keyguardmanager) context.getsystemservice (context. keyguard_service);
boolean flag = mkeyguardmanager.inkeyguardrestrictedinputmode();
如果flag為true,表示有兩種狀態:a、螢幕是黑的 b、目前正處於解鎖狀態 。
如果flag為false,表示目前未鎖屏。
還可以通過反射機制實現,以第一種方法為例:
private static method mreflectscreenstate;
try );
powermanager pm = (powermanager) context.getsystemservice(activity.power_service);
boolean isscreenon= (boolean) mreflectscreenstate.invoke(pm);
} catch (exception e)
二、通過廣播實現:
接收系統廣播事件,螢幕在三種狀態(開屏、鎖屏、解鎖)之間變換的時候,系統都會傳送廣播,我們只需要監聽這些廣播即可。
private screenbroadcastreceiver mscreenreceiver;
private
class
screenbroadcastreceiver
extends
broadcastreceiver else
if (intent.action_screen_off.equals(action)) else
if (intent.action_user_present.equals(action))
}}private
void
startscreenbroadcastreceiver()
Android開屏 鎖屏 解鎖監聽實現
實現方式監聽broadcastreceiver 事件 許可權監聽使用者解鎖需要在androidmanifest中註冊許可權 android.permission.receive user present 複製 具體實現public inte ce screenstatuslistener 複製 實現...
Android判斷螢幕鎖屏的方法總結
由於做乙個專案,需要判斷螢幕是否鎖屏,發現網上方法很多,但是比較雜,現在進行總結一下 總共有兩類方法 一 直接判定 二 接收廣播 現在先說第一類方法 直接判定 1 通過powermanager的isscreenon方法,如下 1 2 powermanager pm powermanager cont...
iOS 鎖屏判斷
ios 鎖屏判斷 應用程式的單例類物件中得到應用程式委託的物件 通知委託應用程式將進入非活動狀態,在此期間,應用程式不接收訊息或事件。這個方法在使用者鎖住螢幕時,也會呼叫。1狀態 2狀態 static void updateenabled cfnotificationcenterref center...