安卓如何检测手机锁屏事件

25

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

4个回答

37

或者您可以这样做:

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

你需要在应用清单中添加权限吗? - pqn
1
尝试过这个,不需要添加权限。 - HVNSweeting
2
我认为这个仅检查屏幕是否亮着而不是检查它是否锁定。这可以与FLAG_KEEP_SCREEN_ON混合使用,因此屏幕仅在您锁定屏幕时关闭。 http://developer.android.com/reference/android/os/PowerManager.html#isScreenOn()那么检查解锁状态呢?(非开屏状态) - HVNSweeting
请返回翻译后的文本:这里有答案 https://dev59.com/FnA75IYBdhLWcg3wH1RB - HVNSweeting
2
从API 20开始,使用isInteractive()代替isScreenOn()。 - Najeebullah Shah
当处于动态壁纸模式下,我该如何检查设备是否已锁定? - android developer

18

拥有一个广播接收器

android.intent.action.SCREEN_ON
并且
android.intent.action.SCREEN_OFF

相关阅读:此处查看CommonsWare的答案


19
记录一下,锁定/解锁不是屏幕开启/关闭的同一事件。 - greenoldman
2
即使在打电话时屏幕关闭,也会发生屏幕关闭的情况。 - user2137179
这是一个未能捕获锁屏的示例:在Android 5上,如果我切换用户,操作系统会进入锁屏状态而不关闭屏幕。 - Sam
我们能否在打电话时禁用SCREEN_OFF事件? - Mehul Ranpara
另一个问题是:如果手机在闲置后自动关闭屏幕,那么手机可能要等5秒钟才会锁定。广播是在屏幕关闭时发送的,而不是在手机锁定时发送的。 - Sam
锁定可能发生在没有屏幕关闭事件的情况下,例如,如果设备通过设备管理员被锁定。 - artem

0

Robert的解决方案的Kotlin格式。

 override fun onPause() {
        super.onPause()

        // If the screen is off then the device has been locked
        val powerManager = getSystemService(POWER_SERVICE) as PowerManager
        val isScreenOn: Boolean = powerManager.isInteractive
        
        if (!isScreenOn) {
            // The screen has been locked 
            // do stuff...
        }
    }

我假设Kitkat版本已经相当老了。


0

使用IntentFilter注册广播:filter.addAction(Intent.ACTION_USER_PRESENT)

即使屏幕开关机,也能很好地工作。


不行。它不可靠。在一些设备上无法触发。 - Michał Dobi Dobrzański

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接