我一直在研究新M7芯片的CMMotionActivityManager
,以确定该设备的用户是否在走路、跑步、开车等(请参阅苹果文档)。这似乎比之前仅使用LocationManager
和加速度计数据来确定这一点向前迈出了一大步。
然而,我注意到CMMotionActivityManager
没有循环活动,这令人失望,而且作为一个新的活动管理器,这几乎是一个交易破坏者。有没有其他人找到了一种方便的方法来将CMMotionActivityManager
与自行车一起使用,而不必为了测试自行车而重新使用CMLocationManager
+加速度计?
请注意,这也不包括火车之类的一般运输选项。例如,我每天坐火车通勤一小时。汽车至少可以变得更通用,类似于Moves使用交通工具的方式。
CMMotionActivity
仅具有以下定义的运动类型:
- 静止的
- 行走
- 正在运行
- 汽车
- 未知
苹果代码中的有用注释,不一定能解决问题,但很有帮助:
CMMotionActivity
基于设备的运动对用户活动的估计。
活动作为一组属性公开,而属性不是相互排斥。
例如,如果你在一辆停在停车标志处的车里,州政府可能会看起来像:静止=是,步行=否,跑步=否,汽车=是
或移动车辆,静止=否,步行=否,跑步=否,汽车=是
或者,该设备可以在运动中,但不能行走或在车辆中。静止=NO,行走=NO,跑步=NO,汽车=NO。注意,在这种情况下,所有属性都是NO。
[直接来源:Apple iOS Framework,CoreMotion/CMMotionActivity.h@interface CMMotionActivity,内联代码注释]
首先是您对M7的问题或信息性详细信息?
是否有其他人找到了使用CMMotionActivityManager的方便方法骑自行车也无需重新组建LocationManager+加速度计只是为了测试自行车吗?
看到了吗,如果你想检查活动是否属于自行车运动,它会造成很多混乱??因为它只是取决于加速度计
加速度计包含微观晶体结构,这些结构会受到加速力的应力,从而产生电压。根据该电压,它可以解析结果。。所以我所知道的是,它只是对你的速度进行了分类,并给出了它是跑步、步行还是汽车的结果,所以如果你想在一段时间内骑自行车,非常快、非常慢或中等,那么它可能会在一段时间导致步行或跑步,或者可能是自动的,所以m7无法澄清它是汽车还是自行车或跑步,因为你骑自行车时速度变化不大。
尽管如此,当用于跑步和步行时,它的一些时间在某些情况下会产生错误的结果。。因此,你的应用程序也有可能提供错误的信息。
你问的另一件事是
注意,这也不包括物品的一般运输选项就像一列火车。例如,我每天坐火车通勤一小时。汽车至少可以变得更通用,类似于Moves使用运输。
因此,苹果公司也在开发其他地图功能。据说,苹果计划在iOS 8中对其地图应用程序进行显著更新,该公司目前正在实施公共交通方向和室内地图功能(谷歌已经在iOS上实现了这一功能)。
http://www.macrumors.com/2013/09/12/apple-working-to-leverage-new-m7-motion-sensing-chip-for-mapping-improvements/(有用链接)
因此,不确定您是否还需要答案,但以下是iOs8 SDK 的最新消息
@property(readonly, nonatomic) BOOL cycling NS_AVAILABLE(NA, 8_0);
在2014年WWDC第612次会议上,两位苹果工程师提供了一些信息:在幻灯片中,他们表示:
性能对位置非常敏感
- 如果设备戴在上臂上效果最佳,最适合回顾性使用
最长延迟
- 最适合回顾性使用案例
在视频中,他们在音轨上(大约11点开始)解释
自行车是新的,我们在iOS 8中引入了它。骑自行车很有挑战性,而且你需要动力,所以它将对位置非常敏感。如果它安装在上臂上,延迟将相当大公平的如果在其他地方,需要更长的时间。因此,我绝对不会建议使用自行车活动分类作为此时此地上下文的提示。例如,它确实是你想在日记应用程序中以回顾性的方式使用的东西。
我为iOS 8和9以及iPhone 5s和6做了一个简单的测试设置,但没有检测到骑行——在超过1.5小时的骑行中没有一次检测到。如果新的iPhone 6S弥补了这一运动活动检测方面的主要缺陷,目前尚不清楚——Phil Schiller在2015年9月宣布了这一消息。
tl;tr
目前,CoreMotion中的自行车检测不起作用,因为它适用于静止、行走、跑步和汽车!它不会被检测到,只能追溯使用。