计步器(CMPedometer) - (Obj-C)

CMStepCounter记录的数据并不准确,iOS 8.0下已经过期,CMPedometer返回的结果更为精准,但是有延迟性

示例代码:

#import "ViewController.h"
#import <CoreMotion/CoreMotion.h>

@interface ViewController ()
@property (nonatomic,strong) CMPedometer *pedometer;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 1. 创建计步器
    self.pedometer = [[CMPedometer alloc]init];
    
    // 2. 开启计步器
    [self.pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
        
        
        NSLog(@"%@",pedometerData.numberOfSteps);
    }];
    
}

@end

除了上面的方法获取数据外,还提供了一个方法,可以限定时间内获取计步数据

[self.pedometer queryPedometerDataFromDate:[NSDate date] toDate:[NSDate dateWithTimeIntervalSinceNow:10] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
        
    NSLog(@"%@",pedometerData.numberOfSteps);
}];

回调中结果返回为一CMPedometerData对象,其中包含属性有:

@property(readonly, nonatomic) NSDate *startDate; 开始时间
@property(readonly, nonatomic) NSDate *endDate;  结束时间
@property(readonly, nonatomic) NSNumber *numberOfSteps; 计步
@property(readonly, nonatomic, nullable) NSNumber *distance; 距离
@property(readonly, nonatomic, nullable) NSNumber *floorsAscended;上了多少台阶
@property(readonly, nonatomic, nullable) NSNumber *floorsDescended;下了多少台阶
@property(readonly, nonatomic, nullable) NSNumber *currentPace;步速 s/m
@property(readonly, nonatomic, nullable) NSNumber *currentCadence;节奏steps/s
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容