Android 判斷鎖屏 開屏等狀態

2021-07-27 14:35:43 字數 1430 閱讀 1346

原文出處:

一、**判斷(通過鍵盤或者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...