2016-09-17 4 views
1

내 응용 프로그램에서 하루에 ActiveEnergyBurned와 BasalEnergyBurned 두 가지를 합하여 표시하고 싶습니다. 단일 HKQuery를 사용하여이 작업을 수행 할 수 있습니까? 아니면 별도로 가져 와서 함께 추가해야합니까?HealthKit : Query로 두 수량을 더할 수 있습니까?

그렇다면 두 쿼리의 결과를 어떻게 결합합니까? 어떤 도움을 한 번에 (*)에 하나의 수량 유형을 조회 할 수 있습니다 HKStatisticsQuery 포함

var startDate = DateTime.Now.Date; 
var endDate = startDate.AddDays(1); 

var predicate = HKQuery.GetPredicateForSamples((NSDate)startDate, 
            (NSDate)endDate, HKQueryOptions.None); 
HKStatisticsOptions sumOptions = HKStatisticsOptions.CumulativeSum; 

HKStatisticsQuery sQuery = new HKStatisticsQuery(qType, predicate, 
           sumOptions, (hQuery, result, error) => { 

     HKQuantity sum = result.SumQuantity(); 

     var date = result.EndDate; 
     var dateTime = DateHelperIOS.NSDateToDateTime(date); 

     double value = sum.GetDoubleValue(hkUnit); 

}); 
HKHealthStore HStore = new HKHealthStore(); 
HStore.ExecuteQuery(sQuery); 
+0

안녕하세요 HeisenBerg, 그 해결책이 있습니까? – seggy

+0

첫 번째 쿼리의 결과 처리기 내에서 두 번째 쿼리를 호출하지 못했습니다. 내가 받아야 할 해결책이 아니라 당시에 내가 필요로했던 해결책이었습니다. 더 나은 솔루션을 찾으면 알려주십시오. – HeisenBerg

+0

확실히 이것에 대한 더 나은 해결책을 찾고 있습니다. – seggy

답변

1

HealthKit 쿼리를, 감사합니다.

여러 쿼리를 백그라운드에서 동시에 실행할 수 있습니다. 이것은 쿼리를 순차적으로 실행하는 것보다 빠릅니다.

(*) 하나의 예외 인 HKActivitySummary이 여러 값을 반환하지만 사용자가 원하는 것은 아닙니다.

+0

답변 해 주셔서 감사합니다. 그러나 두 개의 쿼리가 병렬로 실행되기 때문에 결과를 합할 수 있습니다. 내가 생각할 수있는 유일한 방법은 첫 번째 쿼리의 완료 처리기에서 두 번째 쿼리를 실행하는 것이지만 내 요구 사항에 맞지 않습니다. – HeisenBerg

+0

지금까지는 이러한 접근 방식으로 해결할 수없는 요구 사항을 말하지 않았습니다. 그래서 무엇이 필요하다고 생각하니 만족스럽지 않습니까? –

관련 문제