注意 :这个问题最初是在苹果在iOS SDK中引入运动检测硬件和相关的API之前发布的。 但是,这个问题的答案仍然是相关的。 我正在创build一个iPhone iOS应用程序,涉及跟踪用户的跑步和/或行走。 logging用户跑步和走路的结果保持诚实是非常重要的。 我需要一种方法来抓住使用汽车时可能会作弊的用户(或者意外地离开了跟踪器)。 为了检查用户是在开车还是在车上骑车,我首先想到了这两个检查,但是这两个检查都不能确定用户是否在车中(到某一点)。 用以下方法检查用户的当前速度。 如果用户的行驶速度超过20海里/小时,那么我可以假设用户在汽车里: – (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *recentLocation = [locations lastObject]; recentLocation.speed; //If speed is over 20 MPH, assume the user is not on their feet. 但是,我不确定这是否是一个很好的检查,因为人们logging的速度比以前更快 。 这是一个很好的检查,还是应该使用别的东西? 确定用户使用Core Motion Framework提供的Accelerometer和Motion API进行加速的速度。 如果用户加速超过一定的速度,那么我可以假设用户正在车辆中旅行。 这些假设是正确的吗? 我想我真正的问题是这样的: 有没有更好的方法来检测用户是否在车辆中移动 – 如果是这样的话? 。 如果不是,那么这些检查是否适合这种情况呢,还是会让一些实际上很快的用户感到烦恼呢? CoreMotion是适当的API来做到这一点? 编辑:新的iPhone 5S […]