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:вы заметите, что обработчик не выполняется на каждом шаге. Как сказано в документе: блок обработчика выполняется наилучшим образом при каждом превышении порога количества шагов.

Другие вопросы по тегам