安卓 - 获取接近传感器最小值和最大值



我正在构建的应用程序使用了接近传感器。在不同的手机中尝试,我发现接近传感器在不同的手机中具有不同的(最小,最大)值(我的htc感觉有0表示覆盖,9表示未覆盖,而xperia有0表示覆盖,1表示未覆盖)。所以问题是: 如何获取接近传感器的最小最大值?

我认为接近传感器的最小值对于所有设备都是0的。 并获得最大范围...

    SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    proximitySensor.getMaximumRange();

根据文档:

Some proximity sensors only support a binary near or far measurement.
In this case, the sensor should report its maximum range value in the far state
and a lesser value in the near state

因此,接近传感器甚至可能没有最小值和最大值。然后,您应该将其值与 proximitySensor.getMaximumRange() 进行比较。

每个接近传感器都是不同的。您必须监视onSensorChanged()中的值,并记住最小值和最大值。它工作正常。这是我用于检查接近状态的代码。

    private float proximityCalibratedMax = Float.MIN_VALUE;
    ...
    public void onSensorChanged(SensorEvent event) {
            if(event.values[0] > proximityCalibratedMax){
                proximityCalibratedMax = event.values[0];
            }
            if (event.sensor.getType() == Sensor.TYPE_PROXIMITY && proximityCalibratedMax != Float.MIN_VALUE) {
                if (event.values[0] < proximityCalibratedMax) {
                    prevNear = true;
                    sensorTimestamp = new Date().getTime();
                } else {
                    long currentTimestamp = new Date().getTime();
                    prevNear = false;
                    openAutifyCarMode();
                }
            }
        }

相关内容

  • 没有找到相关文章

最新更新