Android判斷螢幕鎖屏的方法總結

2021-09-08 12:46:12 字數 2781 閱讀 4491

由於做乙個專案,需要判斷螢幕是否鎖屏,發現網上方法很多,但是比較雜,現在進行總結一下:

總共有兩類方法:

一、**直接判定

二、接收廣播

現在先說第一類方法(**直接判定):

1、通過powermanager的isscreenon方法,**如下:? 1

2

powermanager pm = (powermanager) context.getsystemservice(context.power_service);

booleanisscreenon = pm.isscreenon();//如果為true,則表示螢幕「亮」了,否則螢幕「暗」了。

注釋已經寫的很明白了,現在大概說一下,

螢幕「亮」,表示有兩種狀態:a、未鎖屏 b、目前正處於解鎖狀態 。這兩種狀態螢幕都是亮的

螢幕「暗」,表示目前螢幕是黑的 。

2、通過keyguardmanager的inkeyguardrestrictedinputmode方法,**如下:? 1

2

keyguardmanager mkeyguardmanager = (keyguardmanager) context.getsystemservice(context.keyguard_service);

booleanflag = mkeyguardmanager.inkeyguardrestrictedinputmode();

注釋已經寫的很明白了,現在大概說一下,boolean flag = mkeyguardmanager.inkeyguardrestrictedinputmode();

原始碼的返回值的解釋是:true if in keyguard restricted input mode.

經過試驗,總結為:

如果flag為true,表示有兩種狀態:a、螢幕是黑的 b、目前正處於解鎖狀態 。

如果flag為false,表示目前未鎖屏

註明:上面的兩種方法,也可以通過反射機制來呼叫。

下面以第乙個方法為例說明一下。? 1

2

3

4

5

6

7

8

privatestaticmethod mreflectscreenstate;

try);

powermanager pm = (powermanager) context.getsystemservice(activity.power_service);

booleanisscreenon= (boolean) mreflectscreenstate.invoke(pm);

}catch(exception e)

現在介紹第二類方法(接收系統的廣播):

接收系統廣播事件,螢幕在三種狀態(開屏、鎖屏、解鎖)之間變換的時候,系統都會傳送廣播,我們只需要監聽這些廣播即可。

**如下:?

12

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

privatescreenbroadcastreceiver mscreenreceiver;

privateclassscreenbroadcastreceiverextendsbroadcastreceiverelseif(intent.action_screen_off.equals(action))elseif(intent.action_user_present.equals(action))

}

}

privatevoidstartscreenbroadcastreceiver()

Android 監聽螢幕鎖屏,使用者解鎖

public class screenlistener screen狀態廣播接收者 private class screenbroadcastreceiver extends broadcastreceiver else if intent.action screen off.equals acti...

android鎖屏喚醒並解鎖螢幕

1 這個方法是實現鎖屏狀態下喚醒手機,亮屏並解鎖螢幕 public static void wakeupandunlock context context 加入許可權 2 這個收集的 鎖屏 喚醒相關 private keyguardmanager km private keyguardlock kl...

android判斷手機螢幕橫豎屏

在乙個activity顯示中判斷當前螢幕橫豎屏情況有幾種方法 configuration configuration getresources getconfiguration if configuration.orientation configuration.orientation landsc...