iPhone - свойства CMMotionManager и аппаратное обеспечение iPhone - PullRequest
2 голосов
/ 26 октября 2011

Кто-нибудь знает, для каждого свойства CMMotionmanager.deviceMotion и их подвойств, на каком оборудовании они основаны (магнитометр, акселерометр, гироскоп, ...)?

Мой вопрос касается ТС , а не программного обеспечения.

Мне нужно знать, на каком оборудовании CMMotionManager получает свои значения, чтобы узнать, на каком типе iPhone будут работать мои вызовы CMMotionManager. И написать соответствующий текст на моем веб-сайте.

Итак, какое оборудование используется для сборки:

deviceMotion.attitude.roll
deviceMotion.attitude.pitch
deviceMotion.attitude.yaw
deviceMotion.rotationRate (единственный гироскоп? Iphone 4 / 4S с iOS4)
deviceMotion.gravity (единственный акселерометр? Так что он должен работать на всех iPhone с iOS4)
deviceMotion.userAcceleration (единственный акселерометр? Так что он должен работать на всех iPhone с iOS4)
deviceMotion.magnFied (единственный магнитометр? Iphone 3GS / 4 / 4S с iOS4)

Ответы [ 2 ]

5 голосов
/ 26 октября 2011

Обновление (аппаратное обеспечение):

Свойство deviceMotion доступно только на устройствах, имеющих как акселерометр, так и гироскоп.Это связано с тем, что его подчиненные свойства являются результатом алгоритма слияния датчиков, т.е. оба сигнала оцениваются вместе, чтобы уменьшить ошибки оценки.В частности, оценка силы тяжести на быстродвижущихся устройствах все еще является тяжелой работой, когда требуется высокая точность (автомобильная навигация, спутниковое позиционирование, ... сталкиваются с такими же проблемами).К популярным алгоритмам слияния относятся, например, фильтр Калмана и его производные, но я полагаю, что внутренняя реализация CMMotionManager основана на более простых и, следовательно, более быстрых алгоритмах.CMMotionManger accelerometerData и gyroData, которые связаны 1: 1 с датчиком - и в случае iOS 5 magnetometerData.deviceMotion и все его sup-свойства являются вычисленным результатом внутренней реализации алгоритмов слияния.

Старый ответ:

iOS 4.x:

CMMotionManager поддерживает гироскоп и акселерометр.Он обеспечивает isXxxAvailable и isXxxActive для запроса аппаратных возможностей и определения состояния, например, accelerometerAvailable и accelerometerActive .Кроме того, существует простой, но довольно эффективный алгоритм объединения датчиков, называемый DeviceMotion, если на устройстве имеется акселерометр и гироскоп - компас не нужен и, следовательно, не используется.Аналог для датчиков, которые вы используете deviceMotionAvailable и deviceMotionActive для получения информации.

Магнитометр доступен только через CLLocationManager.

У меня иногда возникали проблемы с deviceMotionActive, когда приложение снова выходит на передний план после приостановки (получил true, хотя DeviceMotion определенно был остановлен раньше).

iOS 5.x: Поддержка магнитометра добавлена ​​в CMMotionManager и обрабатывается как два других датчика.

Общие сведения: Вы можете использовать CMMotionManager даже на iPhone3g (с iOS4).У вас нет доступа к CMDeviceMotion, но вы можете запрашивать обновления акселерометра.Таким образом, вы должны использовать низкочастотную фильтрацию, чтобы получить оценку силы тяжести, и она намного хуже, чем DeviceMotion.

Не следует использовать UIAccelerometerDelegate с интерфейсом до iOS 4.

0 голосов
/ 26 октября 2011

См. ссылку

Объект CMMotionManager является шлюзом для служб движения предоставлено iOS. Эти услуги предоставляют приложение с данные акселерометра, данные скорости вращения, данные магнитометра и др. данные о движении устройства, такие как ориентация. Эти типы данных происходят с акселерометрами устройства и (на некоторых моделях) его магнитометром и гироскоп.

...