如何在 iOS 应用程序中每 1/2 秒获取步行距离(以米为单位)和方向?

Posted

技术标签:

【中文标题】如何在 iOS 应用程序中每 1/2 秒获取步行距离(以米为单位)和方向?【英文标题】:How to get walk distance (in meter) and direction in each 1/2 second in iOS Application? 【发布时间】:2015-04-09 06:53:06 【问题描述】:

我正在开发一个办公室室内平面图应用程序,我必须在其中准确地显示办公室导航。要创建一个逻辑,我必须执行一项任务:

应用程序中应该有一个开始UIButton,当我点击该按钮时,应该开始一个过程,在这个过程中,我必须从我开始步行的那一点找到以米为单位的距离,并从那个起点。

是否可以通过CoreMotion框架,如果可以,那么如何?

所以请给我建议任何合适的解决方案。

【问题讨论】:

【参考方案1】:

你可以。但是如果你使用加速度计获取距离的方式,根据我的经验,它的结果会很糟糕。

我推荐检查用户步数并通过步数计算距离的方式。

    计步 使用步数计算距离,并将用户信息作为步距(按高度)。

【讨论】:

嘿@jeffthanx 回复。你在谈论 CMStepCounter 吗?如果是,那么我对 CMStepCounter 类一无所知。你能解释一下这门课是如何计算步数的吗? 没有。 CMStepCounter 不准确。它只是用于高效电池。您必须从计算加速度计信息中找到步数。或者使用其他开源。关键词是计步器。实际上,我正在开源以获取用户的步行(计步器)、休息、升降等状态。 CMStepCounter 可能暂时不适合。 它只能适用于使用 M7 的 iPhone。我只是经过测试。 :)【参考方案2】:

总的来说,这真的很难,而且可能无法使用 CoreMotion 加速度计。基本上,iPhone 传感器为您提供加速,您需要积分两次(即简单地说乘以时间^2)才能到达距离。根据我的测试(和其他人),结果很糟糕。有一些技术需要改进 - 搜索传感器融合和卡尔曼滤波器以了解更多信息。

你会有更好的运气来计算步数,它可以非常准确 - 虽然可能不像办公室那样在很短的距离内。

编辑:我立即得出结论,您想使用 CoreMotion 和加速度计。您还可以使用 CoreMotion 和计步。看看CM Pedometer:https://developer.apple.com/library/prerelease/ios/documentation/CoreMotion/Reference/CMPedometer_class/index.html(注意:在iOS7中这是CMStepCounter)。

查看 CMPedometer 示例的答案:CMPedometer queryPedometerDataFromDate returns error 103

【讨论】:

以上是关于如何在 iOS 应用程序中每 1/2 秒获取步行距离(以米为单位)和方向?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios中每n秒连续在后台线程中运行一个进程

如何在 iOS 应用程序中每 n 分钟获取一次后台位置更新?

在 iOS 中获取用户当前的速度和高度

如何在 MVC 4 中每 3 秒刷新一次局部视图?

java - 如何在java fx中每2秒更新一次标签框?

如何使用 Swift 从适用于 ios 应用程序的 HealthKit 获取循环持续时间