【问题标题】: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 之间的值吗?

【问题讨论】:

    标签: android android-sensors


    【解决方案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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-23
        • 1970-01-01
        • 2022-10-09
        • 2023-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-12
        相关资源
        最近更新 更多