我正在构建的应用程序使用了接近传感器。在不同的手机中尝试,我发现接近传感器在不同的手机中具有不同的(最小,最大)值(我的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();
}
}
}