2017-05-16 4 views
0

블루투스 가슴 끈에서 심박수 데이터를 수집하는 iOS 피트니스 앱이 있습니다. 최근에 Apple Watch 확장 기능을 추가하고 가슴 끈의 대안으로 시계의 심박 센서를 사용했습니다. 불행히도, 나는 그것이 기본적으로 쓸모없는만큼 부정확하다는 것을 발견했습니다.심박수 데이터 Apple에서 몹시 부정확하게 보임

watch versus chest strap chart

나는 가슴 스트랩 데이터를 말할 수있다 : 여기에 레드 라인이 가슴 스트랩과 블루 라인으로부터 수집 된 데이터를 표시하는 3 마일 하이킹의 예는 애플 시계에서 수집 된 데이터를 보여줍니다이다 이 둘 중 더 정확한 것입니다. 왜냐하면 고도 데이터에 오버레이 될 때 높은 심장 박동수가 오르막 구간과 매우 밀접하게 관련되기 때문입니다. (또한 Apple Watch에서 볼 수 있듯이 내 심장 박동수가 60에서 120 또는 110에서 160으로 뛰는 것을 기대하지 않을 것입니다 ...

여기 있습니다 시계 데이터를 수집하는 데 사용하는 코드 더 정확한 데이터를 얻으려면이를 구성하는 또 다른 방법이 있습니까, 아니면이 하드웨어와 같이 좋은가요?

- (void)startWorkoutSession { 
    if (self.workoutSession) { 
     return; 
    } 

    // configure a HealthKit workout 
    HKWorkoutConfiguration *configuration = [[HKWorkoutConfiguration alloc] init]; 
    configuration.activityType = HKWorkoutActivityTypeHiking; 
    configuration.locationType = HKWorkoutSessionLocationTypeOutdoor; 

    // start the workout 
    NSError *error = nil; 
    self.workoutSession = [[HKWorkoutSession alloc] initWithConfiguration:configuration error:&error]; 
    if (!self.workoutSession) { 
     //NSLog(@"*** Unable to create the workout session: %@ ***", error.localizedDescription); 
     NSDictionary *data = [NSDictionary dictionaryWithObjectsAndKeys: 
      @"createWorkoutSession", @"error", 
      error.localizedDescription, @"description", 
     nil]; 
     [self.iosApp sendMessage:data replyHandler:nil errorHandler:^(NSError * _Nonnull error) { 
      // maybe show a local alert here? 
     }]; 
     return; 
    } 
    self.workoutSession.delegate = self; 
    [self.healthStore startWorkoutSession:self.workoutSession]; 

    // update the controls view and show the tracking view 
    self.controls.status = StatusStarted; 
    if (![self.activeController isEqual:self.tracking]) { 
     [self.tracking becomeCurrentPage]; 
    } 
} 

- (void)workoutSession:(HKWorkoutSession *)workoutSession didChangeToState:(HKWorkoutSessionState)toState fromState:(HKWorkoutSessionState)fromState date:(NSDate *)date { 
    // required method 
    if (toState == HKWorkoutSessionStateRunning) { 
     [self requestHeartRate:date]; 
    } 
} 

- (void)requestHeartRate:(NSDate *)date { 
    __weak typeof(self) weakSelf = self; 
    NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:date endDate:nil options:HKQueryOptionNone]; 
    HKSampleType *heartRateType = [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate]; 
    HKAnchoredObjectQuery *query = [[HKAnchoredObjectQuery alloc] initWithType:heartRateType predicate:predicate anchor:0 limit:0 resultsHandler:^(HKAnchoredObjectQuery *query, NSArray<HKSample *> *samples, NSArray<HKDeletedObject *> *deletedObjects, HKQueryAnchor *anchor, NSError *error) { 
     if ((!error)&&(samples.count > 0)) { 
      [weakSelf receiveHeartRate:(HKQuantitySample *)[samples objectAtIndex:0]]; 
     } else { 
      NSLog(@"error with initial heart rate query: %@", error); 
     } 
    }]; 
    [query setUpdateHandler:^(HKAnchoredObjectQuery *query, NSArray<HKSample *> *samples, NSArray<HKDeletedObject *> *deletedObjects, HKQueryAnchor *anchor, NSError *error) { 
     if ((!error)&&(samples.count > 0)) { 
      [weakSelf receiveHeartRate:(HKQuantitySample *)[samples objectAtIndex:0]]; 
     } else { 
      NSLog(@"error with updated heart rate query: %@", error); 
     } 
    }]; 
    [self.healthStore executeQuery:query]; 
} 

- (void)receiveHeartRate:(HKQuantitySample *)sample { 
    HKQuantity *quantity = sample.quantity; 
    int value = (int)[quantity doubleValueForUnit:[HKUnit unitFromString:@"count/min"]]; 
    //NSLog(@"got heart rate %i", value); 

    // display the heart rate in the tracking view 
    [self.tracking updateHeartRate:value]; 
} 

업데이트 :

은 내가 애플 시계 기대한다 정확도의 표시로 this comparison chart보고 있었다. 이제는 Apple Watch를 다른 시계 기반 (손목) 센서와 비교하는 것만 알았습니다. 아마도이 차트는 두 손목 기반 모델 모두 유사하게 부정확하다는 것을 보여줍니다.

웹에서 "Apple watch heart rate accuracy"를 검색하고 그것이 얼마나 정확한지에 대한 많은 이야기를 찾을 수 있기 때문에 혼란 스럽습니다.하지만 아무도 내가보기에는 꽤 가난하다고 생각하는 결과를 보여주지 못합니다.

+0

나는이 테스트를 위해 아주 단단히 묶은 시계를 가지고있었습니다. – arlomedia

+0

손목에 기반한 심장 모니터는 항상 가슴 착용 모델보다 덜 정확합니다. Apple 만 원시 데이터를 더 잘 만들 수 있지만 원시 값을 직접 사용하는 대신 마지막 N 개 측정의 평균을 사용하여 시도해 볼 수 있습니다. –

+0

@TomHarrington, 좋은 생각입니다. 테스트 데이터에 대해 5 분의 롤링 평균을 시도했지만 슬프게도 표시된 값은 한 번에 분당 25-50 bpm 정도 벗어났습니다. 기간이 짧으면 기본적으로 원시 시계 데이터와 일치하는 데이터가 생성되었습니다. 나는이 접근법이 때로는 특이점을 제거하는 것이 더 낫다고 생각한다. – arlomedia

답변

1

Apple Watch에서 심박수보고 빈도와 정확성을 높이기 위해 앱이 할 수있는 유일한 방법은 정확한 HKWorkoutActivityType의 운동 세션을 기록하는 것입니다. 이미이 작업을 수행 한 것으로 보이므로 측정 정확도에 대해서는 Apple과 file a radar을 사용해야합니다.

1

Apple Watch 2에 대한 나의 경험은 같습니다. 그것은 극히 부정확합니다 : 5 분 동안 계단을 오를 때 90도 직후에 70을 보여줍니다. 또는 저 강도 운동에서 판독 할 수없는 높은 판독 값을보고합니다. 그러나 가장 성가신 일은 걷는 동안에도 주기적으로 심장 박동을 잃어 버리는 것입니다!

아마도 4 세대 또는 5 세대까지 기다려야했을 것입니다. 여전히 AW2는 Polar HRM의 대안이 아닙니다. Apple이 심박수 측정의 일관된 정확성을 제공 할 수 없다는 것은 수치스러운 일입니다.

관련 문제