2010-07-03 112 views
21

我希望能夠檢測到手機鎖定事件。當我的應用程序正在運行時,如果我按下紅色按鈕(通話結束按鈕/電源按鈕),手機會被鎖定並且屏幕變爲空白。我希望能夠檢測到這個事件,這有可能嗎?Android檢測到手機鎖定事件

回答

12

有廣播接收器

android.intent.action.SCREEN_ON 

android.intent.action.SCREEN_OFF 

相關:閱讀CommonsWare的回答:Here

+15

爲了記錄 - 鎖定OFF/ON是不一樣的事件作爲屏幕關閉/開啓。 – greenoldman 2012-10-02 17:00:36

+2

屏幕關閉會發生,即使在屏幕掉電時打電話 – 2014-04-06 06:35:27

+0

下面是一個例子,這不捕獲鎖屏:在Android 5上,如果我切換用戶,操作系統進入鎖屏而不關閉屏幕。 – Sam 2015-02-22 04:18:19

32

或者你可以這樣做:

@Override 
protected void onPause() 
{ 
    super.onPause(); 

    // If the screen is off then the device has been locked 
    PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
    boolean isScreenOn; 
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { 
     isScreenOn = powerManager.isInteractive(); 
    } else { 
     isScreenOn = powerManager.isScreenOn(); 
    } 

    if (!isScreenOn) { 

     // The screen has been locked 
     // do stuff... 
    } 
} 
+0

你需要爲這個應用程序清單添加一個權限? – pqn 2012-07-08 03:52:25

+1

試過了,沒有必要添加權限 – HVNSweeting 2012-07-09 01:52:05

+1

我覺得這個只檢查是否屏幕開啓,不檢查鎖定。這可以與FLAG_KEEP_SCREEN_ON混合,因此只有在鎖定屏幕時才關閉屏幕。 http://developer.android.com/reference/android/os/PowerManager.html#isScreenOn() 檢查解鎖是什麼? (不屏幕) – HVNSweeting 2012-07-09 01:57:55