修改 android 键布局以使用键将系统从睡眠状态唤醒的现代正确方法是什么?

What is the modern proper way to modify an android keylayout to wake the system from sleep with a key?

提问人:Dennis 提问时间:2/8/2023 更新时间:6/4/2023 访问量:167

问:

有很多搜索结果解释说,您可以通过修改 keylayout 文件来修改您的 android 手机以因音量键按下而唤醒。您只需将 WAKE 或 WAKE_DROPPED 添加到相关密钥中即可。

允许音量调高键唤醒 android 的示例:

# /vendor/usr/keylayouts/MyKeyboard.kl
key 115 VOLUME_UP WAKE

这似乎不再适用。WAKE 标志似乎被忽略了。此外,如果我将 validatekeymaps 工具与 WAKE_DROPPED 一起使用,您可以看到它甚至不再被识别为有效选项。

> validatekeymaps MyKeyboard.kl
Expected key flag label, got 'WAKE_DROPPED'.

另一方面,如果我将要发送的密钥更改为 POWER 密钥,系统将唤醒。

# /vendor/usr/keylayouts/MyKeyboard.kl
key 115 POWER

无论是否带有 WAKE 标志,系统都会唤醒,因为 POWER 键似乎设置了一些其他属性来告诉系统唤醒。这当然会破坏音量增大功能,并且是不可取的。

所以我的问题是,在键上设置 WAKE 属性的新正确方法是什么?WAKE_DROPPED呢?

输入 android-source 唤醒

评论


答:

3赞 Yong 2/9/2023 #1

您现在无法在键上设置 WAKE 属性。唤醒标志已删除。 唤醒密钥由 KeyEvent.isWakeKey 定义

评论

0赞 Dennis 2/9/2023
谢谢你的信息!我将我的键代码添加到该类的唤醒键列表中,但行为没有变化。系统在内核级别唤醒,但随后只是返回睡眠状态,而不是唤醒 android。因此,问题似乎仍然存在,如何正确地使作为非唤醒键的密钥 X 的行为与作为唤醒键的密钥 Y 一样。
0赞 Dennis 2/9/2023
我也能够编辑 PhoneWindowManager.java。有一种方法可以在屏幕关闭时过滤掉一些键。我评论了该列表中的VOLUME_UP键,现在我可以唤醒屏幕了。似乎比以前容易多了。
0赞 cbugk 8/16/2023
private boolean isWakeKeyWhenScreenOff(int keyCode) {是任何感兴趣的人的方法。 是方法的注释。* When the screen is off we ignore some keys that might otherwise typically \n* be considered wake keys. We filter them out here. \n* \n* {@link KeyEvent#KEYCODE_POWER} is notably absent from this list because it \n* is always considered a wake key.