我需要实现一个原生 iPhone 应用程序来测量手机的速度(基本上是一个速度计)。我知道你可以很容易地通过 CoreLocation API 做到这一点,但我担心电池消耗,因为这是一个实时测量,一次最多可以使用几个小时。我的理解是,虽然您正在积极监视来自 LocationManager 的事件(即使我实际上并不关心 GPS 位置),但它是电池密集型的。
另一个明显的探索选项是使用加速度计来尝试计算速度,但 API 中没有任何内容可以帮助您这样做。根据我的研究,应该可以做到这一点,但似乎非常复杂且容易出错。从加速度转换为速度开始可能会很棘手,而且 iPhone 加速度计数据可能是“嘈杂的”。我熟悉演示使用低/高通滤波等的 SDK 示例——但我在任何地方都没有看到一个很好的例子来显示计算速度。
有没有人可以分享这方面的实际经验?代码会很棒,但实际上我只是想知道是否有人成功地做到了这一点(对于一个长期存在的应用程序)以及他们采用了什么方法。
编辑:我有一个使用 LocationManager API 的工作原型。它工作正常,但更新周期远非实时测量速度的理想选择。根据具体情况,有时可能需要 4-5 秒才能更新。以给定的速度巡航往往工作正常,但从用户交互的角度来看,加速/减速往往会非常严重地滞后。此外,我需要将速度输入到我正在做的其他一些计算中,而精度并不是我真正需要的。
基于我见过的(很少)其他应用程序,尤其是声称不使用 GPS 但准确计算速度的gMeter ,这似乎是可能的。我真的很惊讶在我能找到的任何地方都没有任何参考资料或任何示例代码可以证明这一点。我意识到这很复杂,但肯定有一些东西在那里。