如何读取压力传感器?

时间:2020-04-05 18:38:26

标签: android android-sensors android-homebutton samsung-galaxy

在大多数设备上可以轻松检测到按下物理主页按钮的情况:

...

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设备会受到影响:S8S8+,S9,S9 +,Note10, Note10+ and Fold。正式地,它被认为是压力传感器,而不是按钮。

Screenshot of Samsung Galaxy S9 and S9+ specs on https://www.samsung.com/global/galaxy/galaxy-s9/specs/. Sensors: Iris, Fingerprint, HR, Pressure (!), Gyro, Proximity, Accelerometer, Geomagnetic, RGB Light, Barometer, Hall sensor. Buttons: On/Off, Volume, Bixby. (Home key is not on the list.)

如何读取此传感器?

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"

我不需要有关压力水平的信息,我只想知道是否按下了压力感应虚拟主页按钮。

2 个答案:

答案 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。除了模拟硬件按钮事件之外,这些资源还应该显示虚拟按钮的实际作用。