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