Commotion框架 —— CMPedometer 统计步数的使用
来源:互联网 发布:我的世界为什么用java 编辑:程序博客网 时间:2024/06/08 10:19
对于HealthKit这个框架,很多开发者都不陌生,通过读取HealthKit我们可以获取到运动的信息。追本溯源,这些信息是由CoreMotion提供的。
CoreMotion有陀螺仪和加速器的功能,里面的一些类和接口也是基于这两个功能,系统帮我们计算出来的,比如步数统计和运动状态的判断。这里说一下CoreMotion的一个类 CMPedometer。
CMPedometer 主要是保存有关步行(包括跑步)的一些信息,能保存近7天的步数记录。并提供了查询近七天内任意时间段的步数信息。
+ (BOOL)isStepCountingAvailable;//判断是否可以支持获取步数 + (BOOL)isDistanceAvailable;//判断是否可以支持返回步行的距离 + (BOOL)isFloorCountingAvailable;//判断是否可以支持爬楼梯的检测
/* 这个方法用来查询近7天内的任意时间段的CMPedometerData信息。 其中CMPedometerData 包含步数等信息。在下面使用的时候介绍。*/- (void)queryPedometerDataFromDate:(NSDate *)start toDate:(NSDate *)end withHandler:(CMPedometerHandler)handler;
/* 当你的步数有更新的时候,会触发这个方法,返回从某一时刻开始到现在所有的信息统计CMPedometerData。 值得一提的是这个方法不会和时时返回结果,每次刷新数据大概在一分钟左右。*/- (void)startPedometerUpdatesFromDate:(NSDate *)start withHandler:(CMPedometerHandler)handler;
具体的使用:
1、记录步数
由于startPedometerUpdatesFromDate会持续返回数据,所以我们不需要反复调用。所以可以放在一个单例中。
+ (instancetype)sharedStepsManger { static PXStepsManger *stepsManger; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ stepsManger = [[PXStepsManger alloc] init]; }); return stepsManger;}- (instancetype)init{ self = [super init]; if(self){ self.pedometer = [[CMPedometer alloc]init]; [self.pedometer startPedometerUpdatesFromDate:[NSDate beginOfToday:[NSDate date]] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { if (error) { NSLog(@"%@",error); }else{ NSLog(@"开始时间:%@",pedometerData.startDate); NSLog(@"结束时间:%@",pedometerData.endDate); NSLog(@"步数:%@",pedometerData.numberOfSteps); NSLog(@"距离:%@",pedometerData.distance); NSLog(@"上楼层数:%@",pedometerData.floorsAscended); NSLog(@"下楼层数:%@",pedometerData.floorsDescended); NSLog(@"当前速度:%@",pedometerData.currentPace);//iOS9及其以上才可用 } }]; } return self;}
2、获取指定时间段的步数【这里以获取近7天的数据为例】
这和上面的不同,是当你请求的时候才会触发
- (void)stepsRecordOfRecentlyWeek:(WeekStepsRecord)weekStepsRecord{ //获取一周 NSDate *todayBeginning = [NSDate beginOfToday:[NSDate date]]; NSDate *todayending = [NSDate endOfDay:[NSDate date]]; NSMutableArray *stepsArray = [NSMutableArray array]; NSMutableArray *datesArray = [NSMutableArray array]; for (int i = 6 ; i >= 0; i--) { //获取步数 传值为每一天的开始时间和结束时间。 [self.pedometer queryPedometerDataFromDate:[todayBeginning dateByAddingDays:-i] toDate:[todayending dateByAddingDays:-i] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { [stepsArray addObject:pedometerData.numberOfSteps?pedometerData.numberOfSteps:@0]; (stepsArray.count == 7)? weekStepsRecord(stepsArray):nil; }]; }}
以上就是CMPedometer的使用方法,有关Commotion框架还有很多知识,欢迎大家和我一起讨论,相互学习,共同进步。
1 0
- Commotion框架 —— CMPedometer 统计步数的使用
- CMPedometer(计步器)使用,获取用户行走步数、距离等信息
- iOS中 HeathKit框架学习 步数统计等 韩俊强的博客
- 基于CMPedometer的计步器
- CMPedometer
- HDU-2563.统计步数
- iOS使用HealthKit框架实现获取今日步数
- iOS使用HealthKit框架实现获取今日步数
- MPI—统计完数的个数
- BFS——最小步数 续
- NYOJ—最少步数( 迷宫)
- 使用StreamTokenizer统计文件的字符数
- 程序的步数分析
- ios-步数的获取
- hdu--2563 统计步数(分水平和竖直)
- 蓝桥杯ALGO-113——算法训练 数的统计
- Java多线程—Thread统计完数的个数
- 坑爹的题目—P1308 统计单词数
- 各种颜色的色值
- $.ajax方法
- ListView当中,inflate出来的item的parent设置为null和非null得区别
- 第1章 操作系统概述
- linux入门-cpu种类
- Commotion框架 —— CMPedometer 统计步数的使用
- Compare Version Numbers 比较软件版本
- centos 6.5下安装、配置并启动SSH远程访问
- 用jquery获取xml页面 以json字符串格式输出
- 开源公司黄页之阿里巴巴开源软件推荐(二)
- Spark源码学习(7)——Broadcast
- java多线程处理任务
- Leetcode题解 350. Intersection of Two Arrays II
- JNI 实战全面解析