Android - 获取接近传感器的最小值和最大值

时间:2014-02-11 12:52:33

标签: android sensor proximity

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

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

根据文件:

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()进行比较。

答案 2 :(得分:0)

每个接近传感器都不同。您必须监视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();

                }
            }
        }