Не забывайте о вращении
Так, если повернуть iPhone по часовой стрелке, угол его вращения относительно оси г окажется отрицательным. Если повернуть iPhone против часовой стрелки, то угол его вращения относительно оси г окажется положительным. Если же прекратить вращение iPhone, угол его вращения относительно оси г вернется к нулевому значению.
Вместо того чтобы регистрировать абсолютное значение угла вращения, гироскопы показывают изменения, происходящие при вращении устройства. Эти особенности работы гироскопа будут более наглядно продемонстрированы на первом же примере, приведенном несколько позже.
В системе iOS4 и более поздних версиях показания акселерометра и гироскопа становятся доступными посредством оболочки Core Motion. Среди прочего, эта оболочка предоставляет класс CMMotionManager, выполняющий функции своеобразного шлюза для всех значений, описывающих перемещение мобильного устройства пользователем. В разрабатываемом приложении сначала создается экземпляр объекта класса CMMotionManager, а затем он применяется в одном из следующих двух режимов работы.
Автоматическое исполнение некоторого кода всякий раз, когда происходит движение мобильного устройства.
Постоянное обновление структуры, предоставляющей в любой момент доступ к самым последним значениям, описывающим движение мобильного устройства.
Последний режим работы идеально подходит для игр и других высокоинтерактивных приложений, в которых требуется опрос текущего состояния устройства на каждом шаге игрового или рабочего цикла.
Следует, однако, иметь в виду, что класс CMMotionManager на самом деле не является синглтоном, хотя в приложении его приходится интерпретировать как синглтон. В каждом приложении следует создавать лишь один такой объект, используя обычные методы alloc и init. Так, если требуется доступ к диспетчеру движения из нескольких мест в приложении, этот объект, вероятнее всего, придется создать в делегате приложения и оттуда предоставить доступ к нему.
Помимо класса CMMotionManager, в Core Motion предоставляется также ряд других классов, в том числе CMAccelerometerData и CMGyroData. Они представляют собой простые контейнеры, через которые приложение может получать доступ к данным о движении мобильного устройства. Мы коснемся этих классов, когда до них дойдет черед.
- Дата: 26-01-2015, 13:28