Java 在锁定屏幕上覆盖硬件音量按钮(设备处于唤醒状态)

Java 在锁定屏幕上覆盖硬件音量按钮(设备处于唤醒状态),java,android,keyevent,Java,Android,Keyevent,我在SO上搜索了一个解决方案,虽然这似乎是重复的,但大多数类似的问题都是在屏幕关闭时如何检测硬件音量键。我找到了使用广播接收器的建议,但没有完整的解释 我已成功重写了我的活动中的方法。但是,当屏幕被锁定(但手机处于唤醒状态)时,这些按键不会响应。请有人给我指出正确的方向,当屏幕打开但仍然锁定时,我可以在哪里检测到这些按压 我发现WindowManager.LayoutParams,虽然在API 27中有所贬值,但它运行良好,在API 26设备上实现了我真正想要的功能。我将代码放在活动的onCre

我在SO上搜索了一个解决方案,虽然这似乎是重复的,但大多数类似的问题都是在屏幕关闭时如何检测硬件音量键。我找到了使用广播接收器的建议,但没有完整的解释


我已成功重写了我的
活动中的方法
。但是,当屏幕被锁定(但手机处于唤醒状态)时,这些按键不会响应。请有人给我指出正确的方向,当屏幕打开但仍然锁定时,我可以在哪里检测到这些按压

我发现
WindowManager.LayoutParams
,虽然在API 27中有所贬值,但它运行良好,在API 26设备上实现了我真正想要的功能。我将代码放在活动的
onCreate(…
方法中,
setContentView(…
之前)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    this.setShowWhenLocked(true);
} else {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}

我找到了
WindowManager.LayoutParams
,虽然在API 27中有所贬值,但它运行良好,在API 26设备上实现了我真正想要的功能。我将代码放在活动的
onCreate(…
方法中,就在
setContentView(…
之前

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
    this.setShowWhenLocked(true);
} else {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
}