Android检测到手机锁定事件

问题描述:

我希望能够检测到手机锁定事件。当我的应用程序正在运行时,如果我按下红色按钮(通话结束按钮/电源按钮),手机会被锁定并且屏幕变为空白。我希望能够检测到这个事件,这有可能吗?Android检测到手机锁定事件

有广播接收器

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

或者你可以这样做:

@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