在公司无聊看了下文档做了下小demo计步器来玩玩,见笑了
我不怎么会说话,直接上代码,你们自己看咯
#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *label;
// 计步器 -- iOS7
@property (strong, nonatomic) CMStepCounter *stepCounter;
// 计步器 -- iOS8新增
@property (strong, nonatomic) CMPedometer *pedometer;
@end
@implementation ViewController
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// [self stepCounterTest];
// 判断计步器是否可用
if ( ![CMPedometer isStepCountingAvailable]) {
NSLog(@"计步器不可用");
return;
}
// 判断距离是否可用
if ( ![CMPedometer isDistanceAvailable]) {
NSLog(@"距离不可用");
}
// 判断楼层是否可用(iPhone6之后才支持)
if ( ![CMPedometer isFloorCountingAvailable]) {
NSLog(@"设备不支持楼层计数");
}
// 判断是否支持计算步速
if ( ![CMPedometer isPaceAvailable] || ![CMPedometer isCadenceAvailable]) {
NSLog(@"i 不支持步速计算");
}
_pedometer = [[CMPedometer alloc] init];
[_pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
// CMPedometerData 保存了计步器数据
NSLog(@"%@",pedometerData.numberOfSteps);
NSLog(@"%@",pedometerData.distance);
NSLog(@"%@",pedometerData.floorsAscended);//上了多少层楼
NSLog(@"%@",pedometerData.floorsDescended);//下了多少层楼
NSLog(@"%@",pedometerData.currentPace); // second / meter 走一米多少秒
NSLog(@"%@",pedometerData.currentCadence); // setp / second 一秒走几步
}];
}
- (void)stepCounterTest
{
// 判断计步器是否可用
if ( ![CMStepCounter isStepCountingAvailable]) {
NSLog(@"计步器不可用");
return;
}
_stepCounter = [[CMStepCounter alloc] init];
//
[_stepCounter startStepCountingUpdatesToQueue:[NSOperationQueue mainQueue] updateOn:0 withHandler:^(NSInteger numberOfSteps, NSDate * _Nonnull timestamp, NSError * _Nullable error) {
NSLog(@"走了%zd步", numberOfSteps);
self.label.text = [NSString stringWithFormat:@"你走了%zd",numberOfSteps];
}];
}
@end