【问题标题】:Android detect phone lock eventAndroid检测手机锁定事件
【发布时间】:2010-07-03 06:40:54
【问题描述】:

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

【问题讨论】:

    标签: android


    【解决方案1】:

    您也可以这样做:

    @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...
        }
    }
    

    【讨论】:

    • 你需要为这个应用清单添加权限吗?
    • 试过了,不需要加权限
    • 我认为这只是检查屏幕是否打开,而不是检查锁定。这可以与 FLAG_KEEP_SCREEN_ON 混合使用,因此只有在锁定屏幕时才会关闭屏幕。 developer.android.com/reference/android/os/…支票解锁呢? (非屏幕显示)
    • 用户 isInteractive () 而不是 isScreenOn() 用于 API 20 及更高版本
    【解决方案2】:

    有一个广播接收器

    android.intent.action.SCREEN_ON
    

    android.intent.action.SCREEN_OFF
    

    相关:阅读 CommonsWare 的回答 Here

    【讨论】:

    • 记录一下——锁定关闭/开启与屏幕关闭/开启是不同的事件。
    • 拨打电话时即使屏幕关闭也会发生屏幕关闭
    • 下面是一个不捕获锁定屏幕的示例:在 Android 5 上,如果我切换用户,操作系统会在不关闭屏幕的情况下进入锁定屏幕。
    • 我们可以在拨打电话时禁用 SCREEN_OFF 事件吗?
    • 另外一个问题是:如果手机闲置后自动转屏,手机可能要等5秒后才能锁定。广播是在屏幕关闭而不是手机锁定时发送的。
    【解决方案3】:

    向 IntentFilter filter.addAction(Intent.ACTION_USER_PRESENT)注册广播

    即使屏幕打开/关闭也能正常工作

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 2021-06-29
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      相关资源
      最近更新 更多