Android检测手机锁定事件

Chr*_*ris 22 android

我希望能够检测到手机锁定事件.当我的应用程序运行时,如果我按下红色按钮(呼叫结束按钮/电源按钮),手机将被锁定并且屏幕变为空白.我希望能够检测到这个事件,是否可能?

Rob*_*ert 33

或者你可以这样做:

@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...
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这只是检查屏幕是否打开,而不检查锁定。这可以与 FLAG_KEEP_SCREEN_ON 混合使用,因此仅在锁定屏幕时关闭屏幕。http://developer.android.com/reference/android/os/PowerManager.html#isScreenOn() 检查解锁怎么样?(非屏幕开启) (2认同)
  • 对于 API 20 及以上版本,用户使用 isInteractive () 而不是 isScreenOn() (2认同)

st0*_*0le 15

有一个广播接收器

android.intent.action.SCREEN_ON
Run Code Online (Sandbox Code Playgroud)

android.intent.action.SCREEN_OFF
Run Code Online (Sandbox Code Playgroud)

相关阅读:阅读CommonsWare的答案 在这里.

  • 对于记录 - 锁定/打开与屏幕关闭/打开不同. (16认同)
  • 即使屏幕在拨打电话时屏幕关闭,屏幕也会关闭 (2认同)