【问题标题】:How to read the pressure sensor?如何读取压力传感器?
【发布时间】:2020-07-17 17:33:34
【问题描述】:

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

...

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。官方认为它是压力传感器,而不是按钮。

如何读取这个传感器?

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"

我不需要有关压力级别的信息,我只想知道是否按下了压敏虚拟主页按钮。

【问题讨论】:

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


    【解决方案1】:

    从技术上讲,它不被视为传感器,因此据我所知不能使用

    for (Sensor s : ((SensorManager) getSystemService(SENSOR_SERVICE)).getSensorList(Sensor.TYPE_ALL))
            Log.d("Sensor", s.getName());
    

    我已经记录了具有压敏虚拟主页按钮的设备的所有可用传感器,但该按钮不在列表中。我想知道,How to access sensors not listed by SensorManager?

    【讨论】:

    • 所以它可以像按钮一样被按下,使设备的行为就像按下主页按钮一样,但它被认为是传感器而不是按钮......但无法使用SensorManager,虽然所有其他传感器都可以,所以从技术上讲,它不被视为传感器......我不喜欢三星让我知道它试图摆脱这个按钮/传感器的方式。只要它存在,它就应该可以正常工作。
    【解决方案2】:

    此虚拟按钮不可用于应用程序,只能由三星 ROM 访问。可以定义触发它所需的压力。无论如何,阅读它有什么意义?您的设备没有任何压力传感器,也就是气压计。你的意思是触摸屏,它是压力敏感的——所以唯一能读到它的可能是触摸屏驱动程序。

    这些是 AOSP 的 vendor binaries 的来源。除非构建自定义 ROM,否则可能无法将自定义功能绑定到触摸屏或将值公开给 SDK。除了模拟硬件按钮事件之外,这些来源还应该显示虚拟按钮的实际作用。

    【讨论】:

    • 三星不希望我的应用使用主页按钮,我明白了。我明白了,他们希望它只能由三星 ROM 访问。但是我的应用需要那个按钮,所以我并不真正关心三星的意图。必须有办法让它工作,即使它是 hacky 或无证的。
    • 使用主页按钮的重点是可访问性。我的AccessibilityService帮助用户控制设备,这样他就可以简单地按home键来更改设置,而不用解锁设备和挖掘系统设置等。
    • 该设备也有压力传感器和气压计。请查看我对三星官方页面的问题中的屏幕截图。确实,术语令人困惑。通常,压力传感器是气压计的代名词。但在这种情况下,它指的是压敏虚拟主页按钮。它是一个压力传感器。它不测量气压。它测量是否按下主页按钮。
    • 除了模拟硬件按钮事件之外,我应该阅读源代码的哪一部分来了解虚拟按钮的实际作用?我太初学者了,无法在如此庞大的代码存档中找到相关行。 (尽管缺少KEYCODE_HOME 类型KeyEvent,它是否被视为仿真?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多