在 AccessibilityService 中获得 KEYCODE_HOME KeyEvent 需要什么 API 级别?

What API level is needed to get KEYCODE_HOME KeyEvent in AccessibilityService?

按下两台测试设备的物理主页按钮会导致我的 AccessibilityService 中的 KEYCODE_HOME KeyEvent 仅在其中一台设备上出现。同一制造商,不同型号,不同 API 等级。是否需要一定的 API 级别才能获得物理主页按钮的 KeyEvent

@Override
protected boolean onKeyEvent(KeyEvent event) {
    if (event.getKeyCode() == KEYCODE_HOME)
        Log.d(TAG, "The event works on this device.");
    return super.onKeyEvent(event);
}

我在 Android 模拟器中创建并测试了 2 个具有不同 API 级别的虚拟设备。似乎 API 级别并不重要,只要使用虚拟设备的物理主页按钮即可。因此,如果设备没有在 AccessibilityService 中获得 KEYCODE_HOME KeyEvent,罪魁祸首可能是 API 级别以外的其他东西。

问题提到不仅 API 级别不同,而且模型也不同。在某些设备上,物理主页按钮不会导致 KeyEvent。例如。三星 Galaxy S8, S8+, S9, S9+, Note10, Note10+ and Fold 设备的主页按钮被正式视为压力传感器,而不是按钮。要使用此压力传感器(主页按钮),请参阅此问题:

How to read the pressure sensor?