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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 医生说来姨妈不可以用卫生巾怎么办 隆胸以后摸起来感觉假体会动怎么办 产后15个月说恶露没排干净怎么办 母猪产后两天肚子里还有小猪怎么办 背心式无痕运动文胸显得胸小怎么办 卫生巾过敏起疙瘩反复挠不好怎么办 去健身房办卡老板跑了怎么办 买货我已经拒收商家不退款怎么办 在京东买了东西拒收不退款怎么办 罗马仕充电宝进入休眠状态怎么办 广发信用卡寄到家没拿到快递怎么办 包邮商家要买家出物流费怎么办? 美团外卖下单转化率低怎么办 京东退款不小心点了取消退款怎么办 近邻宝开了箱又关了怎么办 近邻宝箱子打开了东西忘记拿怎么办 京东取消订单商家总不取消怎么办 京东快递退货取件一直取不到怎么办 在京东线上付款了但没收到货怎么办 寄快递收件人电话号码写错了怎么办 京东购物实名认证被别人占用怎么办 货已发出单号还没填买家退货怎么办 自提柜还有一个包忘记拿怎么办 当顾客说衣服太贵的时候怎么办 京东快递送错了被别人签收了怎么办 乐视1s玩王者荣耀卡怎么办 京东商城买东西发现地址错了怎么办 京东分期付款买手机额度不够怎么办 亮皮银色高跟鞋时间放久变色怎么办 饿了么商家钱包提现被锁了怎么办 在淘手游买的游戏账号被找回怎么办 交易猫买手游梦幻号被找回了怎么办 绑定着苹果账号的邮箱忘记了怎么办 京东注册账号跟密码都忘记了怎么办 孩子大学一个宿舍宿友不行怎么办 微信手机支付密码忘记了怎么办 微信公众号不能付款了怎么办 头条误点了投放头条广告怎么办 交行网银密码错误6次怎么办 宁波新冮厦关门我们的消费卡怎么办 第一天上班别人教的学不会怎么办