CMMotionActivity详细介绍汽车,以区分汽车和火车

时间:2018-06-14 07:38:39

标签: ios core-motion cmmotionmanager

我使用CMMotionActivity并在框架返回automotive类型时尝试区分汽车,火车和公共汽车。

这不可能仅使用CoreMotion,因此我认为使用第三方服务是必要的,例如云服务或第三方框架。

有没有人面对同样的问题? 感谢

1 个答案:

答案 0 :(得分:4)

我有一段时间遇到同样的问题。长话短说,从存在的任何事物来看,它几乎是不可能的。但是,它自己也很难 难以烘焙。这是我如何解决它 -

我的应用除了动作权限外,还具有背景位置权限。后台位置使应用程序保持活跃状态​​。您可能知道,您无法从后台启用位置监控,但您可以根据需要保持活动状态,并且可以从后台更改服务质量。为了避免耗尽电池,我将其设置为可能的最低数据质量,这样它在空闲时基本上不会影响功耗。这样,您可以在不打开应用程序的情况下对运动数据进行后台访问,并且无需关闭位置监控即可实现精确的位置跟踪。

我使用此后台权限来监控运动数据,每当它以一定的置信度阈值更改为automotive时,我将位置数据质量提升到最佳可用状态,并尽快将其存储到磁盘。当运动芯片报告walking或其他一些非汽车活动,表明汽车会话已经结束时,我提示用户打开应用程序以填写其他详细信息(这是用于税收目的的驾驶跟踪器)。当用户打开应用程序时,我从地图提供商处提取了火车轨道数据,并运行了一个快速的算法"检测汽车活动是否与任何火车轨道相关。如果它有一定的信心,我丢弃了数据,因为我不需要它,但那是你应该做的。只需将高质量的位置数据与火车轨道的地图数据相关联即可。

我从我所在国家/地区的政府那里得到了我的火车轨道数据,但我想其他地图提供商也提供这些数据。

希望这可以帮到你,抱歉我无法提供预先烘焙的服务!