#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
实用知识:计步器的方法使用
最新推荐文章于 2024-04-12 14:13:43 发布