@property(readonly, nonatomic) NSDate *startDate;
统计开始时间;
②、
@property(readonly, nonatomic) NSDate *endDate;
统计结束时间;
③、
@property(readonly, nonatomic) NSNumber *numberOfSteps;
步数;
④、
@property(readonly, nonatomic) NSNumber *distance;
推算距离;
⑤、
@property(readonly, nonatomic) NSNumber *floorsAscended;
上升的楼层数;
⑥、
@property(readonly, nonatomic) NSNumber *floorsDescended;
下降的楼层数;
例如:
加入头文件 #import < CoreMotion/CoreMotion.h >
iOS 7下获取步数< CMStepCounter >
- (void)viewDidLoad {
[super viewDidLoad];
//如果计步服务可用if ([CMStepCounter isStepCountingAvailable]) {
//创建CMStepCounter对象self.stepCounter = [[CMStepCounter alloc]init];
NSOperationQueue* queue = [[NSOperationQueue alloc]init];
//开始收集计步信息,设置每行走5步执行一次代码块
[self.stepCounter startStepCountingUpdatesToQueue:queue updateOn:5 withHandler:^(NSInteger numberOfSteps, NSDate *timestamp, NSError *error) {
self.stepLabel.text = [NSString stringWithFormat:@"用户已经行走了【%ld】步",numberOfSteps];
}];
}else{
self.stepLabel.text = @"计步器不可用。";
}
}
iOS 8下获取步数< CMPedometer >
- (void)viewDidLoad {
[super viewDidLoad];
//如果计步服务可用if ([CMPedometer isStepCountingAvailable]) {
self.pedometer = [[CMPedometer alloc] init];
[self.pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData *pedometerData, NSError *error) {
self.stepLabel.text = [NSString stringWithFormat:@"用户已经行走了【%@】步",pedometerData.numberOfSteps];
}];
}
}
四、iOS 7新增的CMMotionActivityManager
iOS新增了CMMotionActivityManager来收集、存储用户的运动数据——此处的运动数据用于反映用户当前处于步行、跑步、驾驶车辆或处于静止状态。对于导航应用而言,可通过该类获取用于当前的运动类型的改变,并根据不同的运动类型提供更精确的导航。
通过CMMotionActivityManager类,应用程序即可获取用户当前的运动数据,也可查询用户在过去某个时间段的运动数据。
CMMotionActivityManager提供了isActivityAvailable类方法来判断获取运动数据是否可用,在传统的iPhone、iPad设备上,CMMotionActivityManager暂时不可用。
使用CMMotionAcvitityManager获取实时的运动数据可通过如下方法:
①、
- (void)startActivityUpdatesToQueue:(NSOperationQueue *)queue withHandler:(CMMotionActivityHandler)handler;
该方法的第一个参数需要传一个NSOperationQueue对象;第二个参数是一个形如^(CMMotionActivity *activity){}的代码块,该代码块中的CMMotionActivityManager参数代表用户当前的运动数据;
②、
- (void)stopActivityUpdates;
该方法用于停止获取运动数据;
③、
- (void)queryActivityStartingFromDate:(NSDate *)start toDate:(NSDate *)end toQueue:(NSOperationQueue *)queue withHandler:(CMMotionActivityQueryHandler)handler;
该方法用于查询历史数据,前面两个从哪回溯用于指定获取那个时间段的运动数据;