[英]How to get steps count on hourly basis from HealthKit Swift 4
我需要在任何特定日期按小時繪制用戶所采取步驟的圖表。 但如果用戶的步驟從今天下午3:58開始到今天下午4:10結束,那么我將在這段時間內獲得一個HKStatistics對象。 我無法將這些數據分成兩個樣本,因為我需要在3-4 pm插槽和4-5 pm插槽中采取步驟。
static func getSteps(date: Date, duration: DateComponents, completion: @escaping ([HKSample]) -> Void) {
let quantityType : Set = [HKObjectType.quantityType(forIdentifier: HKQuantityTypeIdentifier.stepCount)!]
let stepsQuantityType = HKQuantityType.quantityType(forIdentifier: .stepCount)!
let startOfDay = Calendar.current.startOfDay(for: date)
if let endOfDay = Calendar.current.date(byAdding: duration, to: startOfDay) {
var interval = DateComponents()
interval.hour = 1
let predicate = HKQuery.predicateForSamples(withStart: startOfDay, end: endOfDay, options: .strictStartDate)
let query = HKSampleQuery.init(sampleType:stepsQuantityType,
predicate: predicate,
limit: HKObjectQueryNoLimit,
sortDescriptors: nil,
resultsHandler: { (query, results, error) in
guard let result = results else {
return
}
// print("result healthkit",result.description)
//print("Total count:",)
completion(result)
})
healthStore.execute(query)
}
}
不要使用HKSampleQuery
繪制數量類型圖表。 HKStatisticsCollectionQuery
旨在用於此目的,並將為您分割落入圖表單獨區域的樣本。 有關如何構建查詢並使用其結果的示例,請參閱文檔 。
你是對的,你不能拆分樣本。 這就是所有可用的信息。 步驟不是一步一步存儲的; 它們被聚合成塊以降低功率和存儲要求(主要是功率;在硬件中累積值並且定期讀取它比在每次檢測到步驟時查詢實時時鍾更容易)。
為了做你正在討論的事情,你需要平均一段時間內的步數。 因此,如果在3:58p至4:07p期間有100個步驟,則平均為10步/分鍾,您將為3p-4p塊分配20步,為4p-5p塊分配80步。 這是你擁有的最好的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.