在 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?
按下两台测试设备的物理主页按钮会导致我的 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?