我希望能够检测手机锁定事件。当我的应用程序正在运行时,如果我按下红色按钮(挂断电话按钮/电源按钮),手机就会被锁定并且屏幕变黑。我希望能够检测到这个事件,这是可能的吗?
我希望能够检测手机锁定事件。当我的应用程序正在运行时,如果我按下红色按钮(挂断电话按钮/电源按钮),手机就会被锁定并且屏幕变黑。我希望能够检测到这个事件,这是可能的吗?
或者您可以这样做:
@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...
}
}
拥有一个广播接收器
android.intent.action.SCREEN_ON
并且android.intent.action.SCREEN_OFF
相关阅读:此处查看CommonsWare的答案。
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版本已经相当老了。
使用IntentFilter注册广播:filter.addAction(Intent.ACTION_USER_PRESENT)
即使屏幕开关机,也能很好地工作。