在大多数设备上都可以很容易地检测到按下物理主页按钮的情况:
...
public class ExampleAccessibilityService extends AccessibilityService {
...
@Override
protected boolean onKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KEYCODE_HOME && event.getAction() == ACTION_DOWN)
Log.d("Example", "The home key is pressed.");
return super.onKeyEvent(event);
}
}但上面的代码在一些具有压敏虚拟主页按钮的设备上不起作用。我想这些三星的Galaxy设备会受到影响:S8,S8+,S9,S9+,Note10, Note10+ and Fold。官方认为它是一个压力传感器,而不是一个按钮。

如何读取此传感器?
TYPE_PRESSURE sensor event与气压计it shows the ambient air pressure in hPa or mbar有关。
getPressure() method返回"the size of the capacitive object rather than literal pressure"。
我不需要关于压力水平的信息,我只想知道是否按下了压力敏感型虚拟主页按钮。
发布于 2020-04-07 13:42:15
从技术上讲,它不被认为是一个传感器,所以据我所知,它不能用于。
for (Sensor s : ((SensorManager) getSystemService(SENSOR_SERVICE)).getSensorList(Sensor.TYPE_ALL))
Log.d("Sensor", s.getName());我已经记录了具有压敏虚拟主页按钮的设备的所有可用传感器,但该按钮不在列表中。我想知道,How to access sensors not listed by SensorManager?
发布于 2020-04-07 14:02:00
此虚拟按钮不用于应用程序,只能由该三星ROM访问。人们可以定义触发它所需的压力。无论如何,阅读它的意义是什么?你的设备没有任何压力传感器,也就是气压计。你的意思是触摸屏,它是压力敏感的-所以唯一的机会阅读它可能是触摸屏驱动程序。
这些是他们的vendor binaries的源代码,用于AOSP。除非构建自定义ROM,否则可能无法将自定义功能绑定到触摸屏或将值公开给SDK。除了模拟硬件按钮事件之外,这些源还应该显示虚拟按钮的实际功能。
https://stackoverflow.com/questions/61047609
复制相似问题