iOS计步器功能实现之CoreMotion(一)
来源:互联网 发布:淘宝搜索流量软件 编辑:程序博客网 时间:2024/05/23 01:14
最近公司的app中新增加了一个计步器的功能,从网上了搜到了healthKit可以实现记步功能,但是分析后发现HealthKit应该是调用的苹果自己的API来实现的专门为自身的运动手环,苹果手表,电子称来设计的。看到微信也有记步功能。后来又根据同行好友的提示找到了方向,那就是CoreMotion这个框架。这个框架的功能很强大的,可以纪录用户的运动状态,走了多少步,走了多远,什么时候运动了,什么时候运动停止了。加速度等等。这里就不一一的详细说了,这里重点说一下如何记步功能实现。
结合方法来说下哦。
-(void)gotoGetStepCountFrom:(NSDate *)fromeDate to:(NSDate *)toDate CallBack:(void(^)(NSString *steps))callBack{ //根据起始期,终止日期进行查询步行数量 //判断记步功能 if ([CMPedometer isStepCountingAvailable]) { [[APP_DELEGATE sharedPedometer] queryPedometerDataFromDate:fromeDate toDate:toDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { if (error) { NSLog(@"error====%@",error); }else { // NSLog(@"AAA步数====%@",pedometerData.numberOfSteps); // NSLog(@"AAA距离====%@",pedometerData.distance); NSString *numberOfSteps = [NSString stringWithFormat:@"%@",pedometerData.numberOfSteps]; callBack(numberOfSteps); } }]; }else{ NSLog(@"记步功能不可用"); }}
这个方法是一个pull方法,就是用户需要用的时候可以调用来获取某个时间段的步行数,步行的距离。另外有一点需要注意:最多只能获取最近7天的数据,所以小伙伴们用的时候注意下哦,另外这个数据苹果只是做了记录步数,时间点的 操作,具体的数据整理分析的工作还是要我们去做才能转化为我们用的数据。这个方法主要就是用来查看运动记录用的
下面给大家介绍一下实时记录运动步数的方法。这个方法是一个push方法就是只要运动的步数发生改变就会触发该方法,app关掉,或者挂起状态除外哦。但是该方法虽然没有执行,但是手机仍然在记录用户的运动状态,等到下次用户开启app的时候,可以把之前的运动书去读取出来。废话不多说了,直接上代码:
-(void)gotoOpenStepCountFunction{ //打开计步器功能后台记步的方法 _pedometer = [APP_DELEGATE sharedPedometer]; [NSUSER_DEFAULTS setBool:YES forKey:@"startStepCount"]; [NSUSER_DEFAULTS synchronize]; if ([CMPedometer isStepCountingAvailable]) { [_pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) { if (error) { NSLog(@"error====%@",error); [PAFFHUD showAlertNoImageWithText:@"计步器功能开始失败"]; [NSUSER_DEFAULTS setBool:NO forKey:@"startStepCount"]; [NSUSER_DEFAULTS synchronize]; }else { NSLog(@"BBB步数====%@",pedometerData.numberOfSteps); NSLog(@"BBB距离====%@",pedometerData.distance); NSDictionary *dic =[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"%@",pedometerData.numberOfSteps],@"numberOfSteps", nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"numberOfSteps" object:nil userInfo:dic]; } }]; }else{ DLog(@"计步器不可用"); [PAFFHUD showAlertNoImageWithText:@"计步器不可用"]; [NSUSER_DEFAULTS setBool:NO forKey:@"startStepCount"]; [NSUSER_DEFAULTS synchronize]; }}-(void)gotoCloseStepCountFucntion{ if ([CMPedometer isStepCountingAvailable]) { _pedometer = [APP_DELEGATE sharedPedometer]; [NSUSER_DEFAULTS setBool:NO forKey:@"startStepCount"]; [NSUSER_DEFAULTS synchronize]; [_pedometer stopPedometerUpdates]; }}
另外需要说明的是开启后台记步实时更新的这个方法,如果本来就是开启的话,那么这个方法就不再执行了,如果没有的话才会执行的。但是若开启的话,从开始的时间点步行数会被重置为0.这点需要注意下。
当然下面的close的方法直接就是关闭后台记步实时跟新的功能了。不想用的时候关掉就好了。
最基本的的计步器到这里就说完了,建议大家要做的可以看看官方的API,里面都有方法的说明的。可以更好的理解。
下面把我的dem分享给大家,如果大家觉得哪些地方理解有偏差的或者不对的话,建议大家提一下建议哦,大家一块进步。
demo下载地址:计步器demo
如果感兴趣的话可以看我的下一篇博客《iOS计步器功能实现之CoreMotion如何读取数据(二)》
参考博客:http://www.jianshu.com/p/e5f332f9b27c
- iOS计步器功能实现之CoreMotion(一)
- iOS计步器功能实现之CoreMotion如何读取数据(二)
- iOS使用CoreMotion实现摇一摇功能
- iOS使用CoreMotion实现摇一摇功能
- ios coremotion 之CMStepCounter
- iOS之 CoreMotion 框架
- iOS 开发之传感器的使用—<CoreMotion/CoreMotion.h>
- IOS CoreMotion
- iOS 探讨之 传感器库(CoreMotion.framework)
- iOS经典讲解之实现App消息推送功能(一)
- iOS使用CoreMotion
- CoreMotion iOS陀螺仪使用
- IOS开发之使用Speex格式实现简单的语音聊天功能(一)
- IOS开发之使用Speex格式实现简单的语音聊天功能(一)
- iOS开发之高级视图—— UINavigationController(一)简单导航功能实现
- 【IOS功能实现】之 LBS功能详解(获取经纬度)
- iOS之实现倒计时功能
- iOS 实现计步器功能
- 仿悟空遥控器控制页面
- 最大公约数
- 一个奇怪的Exception
- bash: .... command not found... 命令无效
- 桌面智能盆栽——我的第一个实战项目
- iOS计步器功能实现之CoreMotion(一)
- JavaScript拖拽原理及兼容性问题
- Linux 驱动开发内核模块的添加
- hadoop单元调试:MRunit(maven配置pom.xml)
- XMPPFramework iOS开发(一)导入XMPP框架
- Associative机制使用场景
- stm32f10x学习一 存储器和总线构架
- 动态规划1011
- 多线程(二) 同步 锁对象和条件对象