在大多数设备上可以轻松检测到按下物理主页按钮的情况:
...
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"。
我不需要有关压力水平的信息,我只想知道是否按下了压力感应虚拟主页按钮。
答案 0 :(得分:0)
从技术上讲,它不被视为传感器,所以据我所知不能使用。
for (Sensor s : ((SensorManager) getSystemService(SENSOR_SERVICE)).getSensorList(Sensor.TYPE_ALL))
Log.d("Sensor", s.getName());
我已经记录了具有压敏虚拟主页按钮的设备的所有可用传感器,但是该按钮不在列表中。我想知道,How to access sensors not listed by SensorManager?
答案 1 :(得分:0)
此虚拟按钮不适用于应用程序,只能由该Samsung ROM访问。可以定义触发它的压力。无论如何阅读有什么意义?您的设备没有任何压力传感器,也称为气压计。您的意思是触摸屏,它对压力敏感,因此唯一的阅读机会可能是触摸屏驱动程序。
这些是其vendor binaries和AOSP的来源。除非构建自定义ROM,否则可能无法将自定义功能绑定到触摸屏或将值公开给SDK。除了模拟硬件按钮事件之外,这些资源还应该显示虚拟按钮的实际作用。