Как узнать количество шагов по часам в HealthKit Swift 4 - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно построить график для шагов, предпринимаемых пользователем на почасовой основе в любую конкретную дату.Но если шаги пользователя начинаются сегодня в 15:58 и заканчиваются сегодня в 16:10, то я получаю только один объект HKStatistics за этот период времени.Я не могу разбить эти данные на две выборки, так как мне нужно получить шаги, предпринятые в гнезде с 14:00 до 16:00.

  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)
        }
    }

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Не используйте HKSampleQuery для составления диаграмм количественных типов.HKStatisticsCollectionQuery предназначен для этой цели и будет разбивать выборки, попадающие в отдельные области вашего графика.См. документацию для примеров того, как построить запрос и использовать его результаты.

0 голосов
/ 18 сентября 2018

Вы правы, вы не можете разделить образец.Это вся информация, которая доступна.Шаги не сохраняются пошагово;они объединены в блоки для уменьшения требований к энергопотреблению и хранению (в основном это мощность; проще накапливать значение в аппаратном обеспечении и периодически его считывать, чем запрашивать часы реального времени при каждом обнаружении шага).

Чтобы сделать то, что вы обсуждаете, вам нужно усреднить шаги за период.Таким образом, если за период с 3: 58p по 4: 07p было 100 шагов, это в среднем составляет 10 шагов в минуту, и вы должны выделить 20 шагов для блока 3p-4p и 80 шагов для блока 4p-5p.Это лучшая информация, которую вы имеете.

...