iOS CMStepCounter и CMMotionActivityManager
Я использую CMStepCounter
а также CMMotionActivityManager
,
То, что я хотел бы сделать, - это рассчитать мое общее время ходьбы в течение дня, и отсюда мою среднюю скорость.
Тем не менее, глядя на данные в CMMotionActivityManager
Ясно, что число шагов в течение дня фактически регистрируется в течение периодов, которые имеют "неизвестную активность" и не являются ходьбой или бегом. Это имеет смысл, так как вам нужно сделать несколько шагов, чтобы iOS знала, что вы идете. Тем не менее, они складываются в течение любого дня.
Запрос CMMotionActivity
можно получить метку времени каждого события. Однако, хотя для меня ясно, что каждый шаг должен быть отмечен CMStepCounter
Я вижу только метод, который возвращает общее количество шагов между двумя точками во времени. Что было бы здорово, если бы я мог вернуть массив каждого шага с его отметкой времени, и если да, то как?
Большое спасибо.
1 ответ
С текущим Core Motion API вы не можете получить массив каждого шага с его отметкой времени напрямую.
Но вы можете использовать queryActivityStartingFromDate:toDate:toQueue:withHandler:
чтобы получить массив CMMotionActivity
объекты. Затем используйте метки времени, чтобы рассчитать количество шагов, позвонив queryStepCountStartingFrom:to:toQueue:withHandler:
,
Я не думаю, что процессор M7 хранит каждый шаг со своей собственной отметкой времени. Если вы пройдете 1
как stepCounts
к методу startStepCountingUpdatesToQueue:updateOn:withHandler:
вы заметите, что обработчик не выполняется на каждом шаге. Как сказано в документе: блок обработчика выполняется наилучшим образом при каждом превышении порога количества шагов.