通过CMMotionActivityManager获取运动数据时,程序将会得到一个CMMotionActivity对象,该对象包含如下属性:
①、
@property(readonly, nonatomic) BOOL stationary;
该属性返回用户是否处于静止状态;
②、
@property(readonly, nonatomic) BOOL walking;
该属性返回用户是否正在步行;
③、
@property(readonly, nonatomic) BOOL running;
该属性返回用户是否正在跑步;
④、
@property(readonly, nonatomic) BOOL automotive;
该属性返回用户是否正在驾车;
⑤、
@property(readonly, nonatomic) BOOL unknown;
该属性返回用户是否处于未知运动中;
⑥、
@property(readonly, nonatomic) NSDate *startDate;
获取该运动的开始时间;
⑦、
@property(readonly, nonatomic) CMMotionActivityConfidence confidence;
该属性返回该运动数据的可靠程度;
例如:加入头文件 #import < CoreMotion/CoreMotion.h >
- (void)viewDidLoad {
[super viewDidLoad];
//如果设备支持获取运动数据if(CMMotionActivityManager.isActivityAvailable) {
//创建CMMotionActivityManager对象self.motionActivityManager = [[CMMotionActivityManager alloc]init];
NSOperationQueue* queue = [[NSOperationQueue alloc]init];
//开始收集运动数据,当收集到运动信息时执行传给该方法的代码块参数
[self.motionActivityManager startActivityUpdatesToQueue:queue withHandler:^(CMMotionActivity *activity) {
NSMutableString* str = [NSMutableString stringWithFormat:@"---运动信息---\n"];
//获取运动信息
[str appendFormat:@"是否步行:%d\n",activity.walking];
[str appendFormat:@"是否跑步:%d\n",activity.running];
[str appendFormat:@"是否驾车:%d\n",activity.automotive];
[str appendFormat:@"是否静止:%d\n",activity.stationary];
[str appendFormat:@"是否未知:%d\n",activity.unknown];
self.activityLabel.text = str;
}];
}else{
self.activityLabel.text = @"该设备不支持获取运动数据";
}
}
五、本章小结
本章不要介绍了iOS的加速计和陀螺仪支持。通过加速计和陀螺仪支持,开发者可以获取设备当前的加速度数据、陀螺仪数据以及磁场数据。学习本章需要掌握CoreMotion框架中的CMMotionManager、CMDeviceMotion,通过CMMotionManager能以代码块或主动请求的方式获取设备的加速度数据、陀螺仪数据以及磁场数据,通过CMDeviceMotion则可以感知设备移动信息。除此之外,本章还介绍了iOS 7新增的CMStepCounter和CMMotionActivityManager,其中CMStepCounter用于获取携带该设备的用户跑步的步数,而CMMotionActivityManager则用于感知设备当前的运动状态。
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('').text(i)); }; $numbering.fadeIn(1700); }); });