Android:如何处理不准确的气压计?

Posted

技术标签:

【中文标题】Android:如何处理不准确的气压计?【英文标题】:Android: How does one deal with inaccurate baromters? 【发布时间】:2013-07-26 03:44:16 【问题描述】:

我一直在使用三星 Galaxy S3 开发一个使用气压计估计用户高度的应用程序。我使用 SensorManager.getAltitude(p0, p),并设置 p0 等于最近机场报告的海平面压力。我设置 p 等于气压计返回的值。

不幸的是,返回的高度系统性地比实际高度高出 20 米左右。我确定气压计返回的压力值太低,因此 SensorManager.getAltitude 正在返回更高的高度。为了证明这一点,我什至开车去了一个机场,我从那里得到了海平面压力并将我的手机与跑道齐平。

在检查气压计的准确性时(使用 SensorEvent 的准确度字段),它返回零值,这意味着“传感器不可信”或“需要校准”(https://developer.android.com/reference/android/hardware/SensorManager.html#SENSOR_STATUS_UNRELIABLE)。

具体来说,我的问题是:

    这正常吗?我没有其他带气压计的设备,所以无法检查。手机如何确定其传感器“不可信”?

    有什么方法可以校准传感器吗?理想情况下,我可以检查用户气压计的准确性,然后对其进行校准(假设我知道气压值偏离了多少)。

【问题讨论】:

【参考方案1】:

我用于校准的方法是调整 P0 以使高度与校准点的已知高度相匹配。我使用各种方法来获取已知高度,但最自动的是获取 gps 位置,然后使用其中一种在线服务来查找高度。

使用这种方法,我不必太担心气压计的绝对精度。如果压力总是高出 0.5%,那就不重要了。只要我能在静止时获得相对稳定的读数,我就很高兴。我应用了各种过滤,尤其是在计算累积上升和下降数字时,我认为这是我为用户收集的最重要的统计数据。

【讨论】:

嗨!感谢您的回答。我遇到的问题是,如果返回值不是 1.005*actual_pressure 而是比实际压力高 0.6 in hg 怎么办?将您的解决方案与前者一起使用通常会提供良好的高度;在后者上使用它会导致测量的高度在更高的高度偏离。一旦系统告诉您“传感器不可信”,您如何知道错误将如何表现?你的答案是一个很好的补丁,但我希望能有一些理想地修复传感器校准的东西。也许那不存在。 我有很多用户使用所有带有压力传感器的手机,并且对此报告没有任何具体的投诉。我自己在去年的测试中没有适当的高。我确实让用户意识到气压高度的变幻莫测,但他们中的大多数人都明白它比 GPS 更好,特别是如果你对上升和下降感兴趣。如果您想要更高的精度,您需要将温度和相对湿度输入到计算中,据我了解,这在 S4 上可能是可行的。

以上是关于Android:如何处理不准确的气压计?的主要内容,如果未能解决你的问题,请参考以下文章

NTILE() 如何处理不平衡的数据?

如何处理不受信任的服务 URL?

如何处理不安全的 XMLHttpRequest 端点 [重复]

如何处理不返回的函数

如何处理不抛出 catch 的 API 请求? (403 错误)

HikariCP 如何处理不完整的 JDBC 事务?