CMMotionActivityManager忽略骑行运动

10

我一直在研究新的M7芯片的CMMotionActivityManager,用于确定设备用户是否在走路、跑步、坐车等状态(请参阅苹果文档)。相比仅使用LocationManager和加速度计数据来确定这些状态,这似乎是一个很大的进步。

然而,我注意到CMMotionActivityManager没有包括“骑车”这个活动,这是令人失望的,并且几乎成为完全使用作为新活动管理器的交易破坏者。有没有其他人发现方便的方法来使用CMMotionActivityManager并同时包括骑自行车,而不必重新整合CMLocationManager + 加速度计来测试骑自行车?

请注意,这也不包括类似火车等普通交通工具的选项。例如,我每天要在火车上通勤一个小时。汽车至少可以变得更加通用,类似于Moves使用“Transport”。

CMMotionActivity仅定义了以下运动类型:

  • 静止
  • 步行
  • 跑步
  • 汽车
  • 未知

来自苹果代码的有用注释,虽然不能解决问题,但很有帮助:

CMMotionActivity

基于设备运动的用户活动估计。

活动作为一组属性公开,这些属性不是互斥的。

例如,如果你在停在路口的汽车中,状态可能如下: 静止 = 是,步行 = 否,跑步 = 否,汽车 = 是

或者是一个移动的车辆,静止 = 否,步行 = 否,跑步 = 否, 汽车 = 是

设备也可以在运动中,但不是步行或坐车。

静止=否,行走=否,奔跑=否,汽车=否。注意,此情况下所有属性均为否。

2
我认为这是一个非常有价值的问题。 - Alper
1
当佩戴者正在骑自行车时,CMMotionActivity会报告哪些活动? - matt
如果M7能够单独检测骑行,而不需要使用GPS,那将是非常好的,因为GPS会消耗我的电池。有没有办法查看芯片的原始数据? - v3nt
M7芯片可以存储7天的数据,但我认为它不会存储原始数据。我想它会在需要时使用数据,计算并存储统计信息,然后继续运行。M7旨在在前台可查询,但不在后台,因此监视实时数据也不是一个真正的选择,并且这样做也会破坏其非后台优化。 - Miro
骑行在安装了iOS 8.3的iPhone 6上仍然无法检测到(这是目前最新的设备/ iOS)。我得到的是未知的活动。有人找到原因了吗? - Lukasz
显示剩余4条评论
3个回答

4
首先,这是关于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/(有用的链接)

2

如果你还需要答案,这里是iOs8 SDK的最新情况


@property(readonly, nonatomic) BOOL cycling NS_AVAILABLE(NA, 8_0);

我还没有看过这个,但显然他们现在支持ios8了!感谢更新。我已经将它添加到我的代码中。 - Miro
1
我在 iPhone 6,iOS 8.3 上进行了测试,仍然无法检测到骑行(当我骑行时出现未知错误)。 - Lukasz
有人仍然遇到这个问题吗?我今天尝试了使用SE(第二代,iOS 14)骑行约5分钟,但是仍然无法检测到骑行。 - Thread Pitt

1

2014年WWDC的第612场会议中,两位代表苹果的工程师提供了一些信息:在幻灯片中他们指出:

性能非常依赖位置

  • 如果设备佩戴在上臂上效果最好,适用于回顾使用案例

延迟最长

  • 适用于回顾使用案例

在视频中,他们在音轨上解释(大约从11:00开始)

骑车是新功能,我们在iOS 8中引入了它。骑车非常具有挑战性,再次强调需要动态感知,因此它对位置非常敏感。如果它安装在上臂上,延迟会相当合理。如果安装在其他任何地方,时间会更长。所以我绝不建议使用骑车活动分类作为当前环境的提示。例如,它确实是您想要在日记应用程序中以回顾方式使用的内容。
我为iOS 8和9以及iPhone 5s和6制作了一个简单的测试设置,骑车没有被检测到-在1.5小时的骑车过程中没有一次。如果新的iPhone 6S能够弥补这个运动活动检测的重大缺陷尚不清楚-Phil Schiller在2015年9月宣布了这一点。
简而言之,目前CoreMotion中的骑车检测与静止、步行、奔跑和驾车的检测方式不同!它不会被检测到,只能以回顾方式使用。

1
iPhone6S似乎没有改善这个问题。在初始测试中,骑车仍然计入我的步数统计。 - svarrall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接