iOS-获取手机健康步数,去除人为添加的数据

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #pragma mark - 获取步数从HealthKit  
  2. - (void)getstepCountFromHealthKit  
  3. {  
  4.     HKQuantityType *type = self.items[5];  
  5.        //这个函数是获取苹果健康里面的全部步数包括人为添加的  
  6.     [self fetchQuantity:typecompletionHandler:^(NSArray *result,NSError *error) {  
  7.         dispatch_async(dispatch_get_main_queue(), ^{  
  8.             if (error)  
  9.             {  
  10.                 //从苹果健康获取步数失败  
  11.                 NSLog(@"error:%@",error);  
  12.                 [PersonInfo sharePersonInfo].isAllow = NO;  
  13.             }  
  14.             else if ([resultcount] == 0)  
  15.             {  
  16.                 //没有步数  
  17.                 [PersonInfo sharePersonInfo].isAllow = YES;  
  18.             }  
  19.             // succeeded to retrieve the health data  
  20.             else  
  21.             {  
  22.                 [PersonInfo sharePersonInfo].isAllow = YES;  
  23.                             //这个函数是去除人为添加的,留下系统记录的步数  
  24.                 NSArray *array = [selfgetRealHealthData:result];  
  25.                   
  26.                 //统计数组里面的步数  
  27.                 NSInteger allArrStepCount = 0;  
  28.                 //一个数组的添加  
  29.                 for (NSDictionary *dictin array)  
  30.                 {  
  31.                     NSInteger stepCount = [dict[@"stepCount"]integerValue];  
  32.                     allArrStepCount = allArrStepCount + stepCount;  
  33.                     NSString *dateTime = dict[@"dateTime"];  
  34.                     [_dateTimeArr addObject:dateTime];  
  35.                 }  
  36.                   
  37.                 NSString *value = [NSStringstringWithFormat:@"%ld",(long)allArrStepCount];  
  38.                   
  39.                 [selfsetStepCountAboutDataBase:value locationCount:1getArr:array];  
  40.             }  
  41.           });  
  42.       }];  
  43. }  
  44.   
  45.   
  46. #pragma mark - 从健康中获取真实数据 --去除人为添加的  
  47. - (NSArray *)getRealHealthData:(NSArray *)resultArr  
  48. {  
  49.     NSMutableArray *returnArr = [[NSMutableArrayalloc]init];  
  50.     HKQuantityType *stepType = [HKObjectTypequantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];  
  51.     for (HKQuantitySample *modelin resultArr)  
  52.     {  
  53.         //HKQuantity 类存储了给定单位的值,此值和单位就构成了数据。和 HKUnit类一样,在使用它时,需要进行实例化。实例化 HKQuantity需要使用到 init(unit:doubleValue:)方法。它可以用来创建一个 quantity(数量)对象。  
  54.         HKQuantity *resultQuantity = model.quantity;  
  55.         HKUnit *unit = [TTMHealthKitHelperdefaultUnitForQuantityType:stepType];  
  56.         double valueDou = [resultQuantity doubleValueForUnit:unit];  
  57.         NSString *value = [NSStringstringWithFormat:@"%.0f",valueDou];  
  58.   
  59.         //NSString *startDateStr = [RequestHelper getDateStrFromDate:model.startDate];  
  60.         NSString *endDateStr   = [RequestHelpergetDateStrFromDate:model.endDate];  
  61.           
  62.         NSDictionary *dict = (NSDictionary *)model.metadata;  
  63.         NSInteger wasUserEntered = [dict[@"HKWasUserEntered"]integerValue];  
  64.           
  65.         if(wasUserEntered == 1)  
  66.         {  
  67.            //这是用户自己手动添加的数据  
  68.             //NSLog(@"value == %@",value);  
  69.         }  
  70.         else  
  71.         {  
  72.     //这是苹果HealthKit记录的数据  
  73.             NSDictionary *dictReturn = @{@"dateTime":endDateStr,@"stepCount":value};  
  74.             [returnArr addObject:dictReturn];  
  75.         }  
  76.     }  
  77.     return returnArr;  
  78. }  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值