iOS:没有GPS,是否可以检测用户是否在驾驶车辆?

时间:2016-04-24 01:58:31

标签: ios objective-c gps

如果用户正在驾驶车辆,我正在开发一个带有弹出消息的应用程序。我已经实现了SOMotionDetector库。这个库工作得很好,但我不想跟踪用户的位置,我绝对不想显示一条消息,要求获得跟踪其位置的权限。还有另一种选择吗?

这是我添加的编码,不确定它是否有帮助。

[SOLocationManager sharedInstance].allowsBackgroundLocationUpdates = NO;

[[SOMotionDetector sharedInstance] startDetection];

[SOMotionDetector sharedInstance].useM7IfAvailable = YES; //Use M7 chip if available, otherwise

[SOMotionDetector sharedInstance].motionTypeChangedBlock = ^(SOMotionType motionType) {
    switch (motionType) {
        case MotionTypeNotMoving:
            break;
        case MotionTypeWalking:
            break;
        case MotionTypeRunning:
            break;
        case MotionTypeAutomotive:[self alertMessage];
            break;
    }
};

1 个答案:

答案 0 :(得分:4)

是的,这是可能的。

  1. 您可以在设备上使用Core Motion来指示是否 用户可能正在开车。 CoreMotion API 为您提供最佳iOS 猜测用户的活动,但不能保证它是100% 准确。 (例如,我不确定坐火车是否可以计算 作为汽车。另请注意,不同的活动类型不是 相互排斥。)你的应用程序最好检查一下 您感兴趣的活动类型,而不是尝试排除这些类型 你不想要。
  2. 使用以下方法检查用户的当前速度。如果是用户 旅行速度超过20英尺的MPH,然后我可以认为 用户在车里:

    - (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.
      }