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

Override hardware volume buttons at lock-screen (device is awake)

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

我已成功覆盖 Activity 中的 dispatchKeyEvent(KeyEvent event) 方法。但是,当屏幕锁定时(但 phone 处于唤醒状态)这些键不会响应。当屏幕处于 On 但仍处于锁定状态时,有人可以指出我可以检测到这些按键的正确方向吗?

我发现 WindowManager.LayoutParams FLAG_SHOW_WHEN_LOCKED,虽然在 API 27 中贬值,但在我的 API 26 设备上运行良好并且可以满足我的需求。我将代码放在 Activity 的 onCreate(... 方法中 setContentView(....

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