您的位置:首页 > 移动开发 > IOS开发

IOS 计步器

2016-04-13 13:08 507 查看
这篇博客介绍的是当前比较流行的“计步器”-只是简单的知识点

计步器的实现在IOS8开始进行了改变。

但是我会对之前之后的都进行简单介绍。

IOS 8 -

//
//  ViewController.m
//  CX 计步器
//
//  Created by ma c on 16/4/12.
//  Copyright © 2016年 bjsxt. All rights reserved.
//

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

@interface ViewController ()

@property (nonatomic, strong) CMStepCounter * counter;

@end

@implementation ViewController

#pragma mark - <懒加载>
- (CMStepCounter *)counter{
if (!_counter) {
_counter = [[CMStepCounter alloc]init];
}
return _counter;
}

- (void)viewDidLoad {
[super viewDidLoad];

//判断计步器是否可用
if (![CMStepCounter isStepCountingAvailable]) {
NSLog(@"计步器不可用");
return;
}
//开始计步
//startStepCountingUpdatesToQueue 选择在哪个线程里进行
//updateOn 对应的是每隔几秒后回调下面的block
[self.counter startStepCountingUpdatesToQueue:[NSOperationQueue mainQueue] updateOn:2 withHandler:^(NSInteger numberOfSteps, NSDate * _Nonnull timestamp, NSError * _Nullable error) {

if (error) {
return ;
}

NSLog(@"可以在这里进行一些操作");

}];
}

@end


IOS 8 +

//
//  ViewController.m
//  CX 计步器
//
//  Created by ma c on 16/4/12.
//  Copyright © 2016年 bjsxt. All rights reserved.
//

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

@interface ViewController ()

@property (nonatomic, strong) CMPedometer * meter;

@end

@implementation ViewController

#pragma mark - <懒加载>
- (CMPedometer *)meter{
if (!_meter) {
_meter = [[CMPedometer alloc]init];
}
return _meter;
}

- (void)viewDidLoad {
[super viewDidLoad];

//判断计步器是否可用
if (![CMPedometer isStepCountingAvailable]) {
NSLog(@"计步器不可用");
return;
}
//开始计步
//在一段时间内的部步数与距离
[self.meter queryPedometerDataFromDate:[NSDate date] toDate:[NSDate dateWithTimeIntervalSinceNow:60*60] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
if (error)
{
NSLog(@"error===%@",error);
}
else {
NSLog(@"步数===%@",pedometerData.numberOfSteps);
NSLog(@"距离===%@",pedometerData.distance);
}
}];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: