实用知识:计步器的方法使用

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

@interface ViewController ()
// 计步器
@property (strong, nonatomic) CMStepCounter *counter;
// 新计步器
@property (strong, nonatomic) CMPedometer *pedometer;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

//    [self test1];

    // 判断计步器是否可用
    if ([CMPedometer isStepCountingAvailable] == NO) {
        NSLog(@"计步器不能用");
        return;
    }

    // 实例化
    _pedometer = [[CMPedometer alloc] init];

    // 开始使用计步器获取数据
    [_pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {

        // CMPedometerData 保存计步器获取的数据
        NSLog(@"走了%zd步", pedometerData.numberOfSteps.intValue);

        // 其它数据需要先验证是否可以使用
        if ([CMPedometer isDistanceAvailable] == YES) {
            NSLog(@"总共走了%zd米", pedometerData.distance.intValue);
        }

        if ([CMPedometer isFloorCountingAvailable] == YES) {
            NSLog(@"上/下了%zd, %zd层楼", pedometerData.floorsAscended.intValue, pedometerData.floorsDescended.intValue);
        }

        if ([CMPedometer isPaceAvailable] == YES) {
            // s/m   秒/米   1米走多少秒
            NSLog(@"每米走%f秒", pedometerData.currentPace.floatValue);
        }
    }];

    // 结束使用计步器获取数据
//    [_pedometer stopPedometerUpdates];
}

//iOS87.0及以前的版本使用的方法
- (void)test1
{
    // 判断计步器是否可用
    if ([CMStepCounter isStepCountingAvailable] == NO) {
        NSLog(@"计步器不能用");
        return;
    }

    _counter = [[CMStepCounter alloc] init];

    // updateOn 计步器计算的起始值
    [_counter startStepCountingUpdatesToQueue:[[NSOperationQueue alloc] init] updateOn:0 withHandler:^(NSInteger numberOfSteps, NSDate * _Nonnull timestamp, NSError * _Nullable error) {

        NSLog(@"走了%zd步", numberOfSteps);
    }];

    //    [_counter stopStepCountingUpdates];
}

@end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值