Что такое хороший способ определить значительное движение с помощью акселерометра iOS?

Сначала я начал думать, что могу использовать CoreLocation для отслеживания скорости, чтобы определить движение. Это не сработало, так как я не хочу, чтобы батарея разрядилась, а при более низких значениях скорости и показания местоположения далеки от точной. Затем я перешел к использованию акселерометра для отслеживания движения следующим образом: http://blogs.oreilly.com/iphone/2008/06/iphone-as-pedometer.html

Это работает на удивление хорошо, но это не так хорошо, как хотелось бы. Большая проблема возникает, когда вы держите телефон, глядя на него во время ходьбы. В этом случае вышеуказанный связанный код не работает. Если он находится в кармане или на руке, это отличный трекер движения.

Итак, при всем том, есть ли какие-либо методы для псевдошагометра с использованием акселерометра iOS (а не M7), который был бы доступен для не математического wiz?

Благодаря!

5 Solutions collect form web for “Что такое хороший способ определить значительное движение с помощью акселерометра iOS?”

Ну, люди, как правило, держат свой телефон неподвижно, когда они идут. Он не может быть идеальным, без шагомера. Вам придется довольствоваться тем, что он не обновляется, когда они держат устройство, которое, если они идут, они не должны делать многого. Вы могли бы попытаться найти средний темп, и пока блокировка слежения отключена (IE они смотрят на экран), то увеличивайте счет на основе среднего темпа?

Если вы используете только акселерометр, вы не можете отслеживать расстояние движения, так как акселерометр может только обнаруживать ускорение, которое не может быть точным, когда парень идет.

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

Когда вы обнаруживаете, что пользователь путешествует быстро, он не может ходить, тогда вы можете использовать только GPS с низкой точностью.

Я рекомендую вам посмотреть сессию 307 WWDC 2013, связанную с CoreLocation.

https://developer.apple.com/wwdc/videos/

Они говорили о вещах, похожих на вашу задачу, используя деффеированные обновления.

Особенно они охватывали такие вещи, как маломощное состояние.

Краткий обзор:

  • Задайте тип активности CLActivityTypeFitness
  • Вызов startUpdatingLocations
  • Использовать - (void)allowDeferredLocationUpdatesUntilTraveled:(CLLocationDistance)distance timeout:(NSTimeInterval)timeout; метод управления пройденным расстоянием. Насколько я понимаю, он просто просыпается после того, как определенные условия были удовлетворены, поэтому чип GPS может передать собранные местоположения непосредственно в CoreLocation, и он уведомит ваше приложение о новых местах, и вы будете обрабатывать и анализировать их, используя некоторые вычисления, чтобы отображать, сколько путешествовал пользователь расстояния, и т.п.

Использование только акселерометра позволяет в лучшем случае получить только обоснованные догадки, когда дело доходит до цели навигации.

Это потому, что есть только два способа интерпретировать данные акселерометра, оба из которых являются ошибочными:

  • Инерциальная навигация
  • Шагомер

Инерционная навигация позволит отслеживать положение во всех трех пространственных измерениях, но датчики, используемые в современных смартфонах, недостаточно точны – ошибка может стать слишком большой через несколько секунд, что сделает данные бесполезными.

Шагомеры, которые вы ищете, делают именно одно: подсчет шагов. Сочетание темпа, количества шагов и длины шага позволяет делать предположения о скорости и расстоянии. Чтобы распознать шаги и рассчитать темп, вы будете использовать акселерометр, чтобы обнаружить удары, которые испытывает телефон, так как он лежит внутри кармана бегунов. Удержание телефона в руке, тем не менее, предотвращает обнаружение этих ударов – поэтому шагомер не имеет никаких шансов выполнить свою работу.

Лучшее, что вы можете сделать, это улучшить общую точность, например, разрешив пользователю откалибровать шагомер. Один из способов сделать это – позволить ему пройти известное расстояние несколько раз с различной скоростью и записать прошедшее время и количество шагов для каждого прогона. Эти измерения позволят вам рассчитать длину шага и даже внести коррективы для разных шагов – и его просто основные математические данные.

обратитесь к CMMotionManager, который предоставляет способы получения координат X, Y и Z во время ускорения вашего устройства:

https://developer.apple.com/library/ios/documentation/coremotion/reference/cmmotionmanager_class/Reference/Reference.html

  • Как заменить устаревший NSWeekCalendarUnit в контексте UILocalNotification?
  • Как изменить положение трека на экране блокировки / центра управления?
  • iOS7 canDisplayBannerAds Проблема UITbarBar
  • Использование NSProgress для поиска скорости загрузки и оставшегося времени
  • Как изменить стиль строки состояния во время запуска на iOS 7
  • Как использовать Refresh Control в UITableViewController ios7
  • Случайные ошибки AVAssetImageGenerator в iOS7
  • Что такое actaully значение UIApplicationBackgroundFetchIntervalMinimum?
  • Выбор поведения iOS 7 UITextView
  • UIToolbar tintColor и barTintColor
  • Получить XIB в iOS 7 SDK
  • Interesting Posts
    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.