Android 接近传感器精度

Android 接近传感器精度,android,android-sensors,Android,Android Sensors,我正在用以下代码测试接近传感器: final SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); final Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); sensorManager.registerListener(this, proximit

我正在用以下代码测试接近传感器:

final SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        final Sensor proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
        sensorManager.registerListener(this, proximitySensor, SensorManager.SENSOR_DELAY_FASTEST);
当我的手远离传感器时,我得到的值只有5.0,当它完全关闭传感器时,得到的值是0.0。(我正在测试NexusS,4.1)
我能得到0到5之间的值吗?

在许多设备上,接近传感器基本上是布尔值——“近”(0)或“远”(5),但这取决于实际使用的接近传感器

我没有Nexus S,因此无法验证该设备,但我猜它与我的三星GS3类似,它报告了以下信息: 名称:GP2A接近传感器 供应商:夏普 版本:1 功率:0.75 最大范围:5.0 决议:5.0

正如您在GS3上看到的,分辨率与最大范围相同,因此无论我做什么,都只能得到0和5


您可以使用类似的应用程序或使用的getMaximumRange()和getResolution()方法检查您自己的设备。

此外,请注意,每个制造商报告的接近传感器近距离和远距离状态的值不同。除此之外,某些智能手机的getMaximumRange()返回的值远高于onSensorChanged中报告的值。因此,您不能依赖手机报告的任何值。我提出的唯一解决方案是监视onSensorChanged中报告的值,并记住最高值,如果该值低于最高值,则表示接近传感器靠近某个对象

以下是一些示例:
摩托罗拉违抗:最低-3,最高-100,获得最大范围-2.1474836E9
THL T200:最低-0,最高-1,获取最大范围-1
三星S5迷你版:最低-0,最高-5,最大范围-4096.0
Nexus S,索尼Z2:最低-0,最高-5,getMaximumRange-5