接近传感器精度
Posted
技术标签:
【中文标题】接近传感器精度【英文标题】:Proximity sensor accuracy 【发布时间】:2013-06-01 19:38:47 【问题描述】:我正在使用此代码测试接近传感器:
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。 (我在 Nexus S 4.1 上进行测试) 我可以得到 0 到 5 之间的值吗?
【问题讨论】:
【参考方案1】:在许多设备上,接近传感器本质上是布尔值——“近”(0) 或“远”(5),但这取决于实际使用的接近传感器。
我没有 Nexus S,因此无法验证该设备,但我猜测它与我的三星 GS3 相似,它报告以下信息: 名称:GP2A接近传感器 供应商:夏普 版本:1 功率:0.75 最大范围:5.0 分辨率:5.0
正如您在 GS3 上看到的,分辨率与最大范围相同,因此无论我做什么,我都会得到的唯一值是 0 和 5。
您可以使用'android Sensor Box' 之类的应用或Sensor API 的getMaximumRange() 和getResolution() 方法来检查您自己的设备。
【讨论】:
【参考方案2】:另外,请注意,每个制造商报告的接近传感器近和远状态的值不同。除此之外,某些智能手机的 getMaximumRange() 返回值远高于 onSensorChanged 中报告的值。因此,您不能依赖电话报告的任何值。我想出的唯一解决方案是监控onSensorChanged中报告的值,并记住最大值,如果该值低于最大值,则表示接近传感器靠近物体。
以下是一些示例: 摩托罗拉 Defy:最低 3,最高 100,getMaximumRange-2.1474836E9 THL T200:最低 0、最高 1、getMaximumRange-1 三星 S5 mini:最低 0、最高 5、getMaximumRange-4096.0 Nexus S、索尼 Z2:最低 0、最高 5、getMaximumRange-5
【讨论】:
以上是关于接近传感器精度的主要内容,如果未能解决你的问题,请参考以下文章