iOs 8,核心动作和骑行活动

时间:2014-09-18 12:18:40

标签: ios objective-c cocoa-touch ios8 core-motion

最后,对于支持的设备和仅在iOs8中,CMMotionActivity还具有另一种跟踪功能,即“循环”#34;

然而,无论我怎么努力,都无法让设备(iPhone 5S)检测骑行。这是我的代码:

CMMotionActivityManager *manager = [[CMMotionActivityManager alloc]init];
[manager startActivityUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMMotionActivity *activity) {
    if(activity.running){
        _txtMoveType.text = @"running";
    }
    if(activity.walking){
        _txtMoveType.text = @"walking";
    }
    if(activity.automotive){
        _txtMoveType.text = @"driving";
    }
    if(activity.stationary){
        _txtMoveType.text = @"standing";
    }
    if(activity.cycling){
        _txtMoveType.text = @"going on bike";
        UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"Bike!" message:@"you are riding a bike, aren't you?" delegate:self cancelButtonTitle:@"Yay!" otherButtonTitles:nil];
        [alert show ];
    }
}];

我不确定为什么活动经理没有检测到骑行,因为它确实能很好地检测出任何支持的活动。

我还试图用

查询过去的活动
- (void)startActivityUpdatesToQueue:(NSOperationQueue *)queue
                    withHandler:(CMMotionActivityHandler)handler;

但结果并没有改变。实际上,也可以在新的HealthKit应用程序中检查这些活动,并且没有骑自行车的痕迹。

任何想法?

1 个答案:

答案 0 :(得分:3)

好的,我在iOs8""文件(参考文献上没有任何痕迹)

  

核心动作框架   Core Motion提供两个新类(CMAltimeter和CMAltitudeData),允许您访问iPhone 6和iPhone 6 Plus上的气压计。在这两个设备上,您还可以使用CMMotionActivity对象来确定用户是否在自行车上。   "

似乎没有静态方法来测试设备是否受支持:

[CMPedometer isStepCountingAvailable]//returns YES on Iphone 5S
[CMPedometer isDistanceAvailable]//returns YES on Iphone 5S
[CMPedometer isFloorCountingAvailable]//returns NO on Iphone 5S

无论如何,单独使用CMMotionActivityManager似乎是不可能的。