Почему акселерометр: didAccelerate: устарел в IOS5? - PullRequest
22 голосов
/ 19 июля 2011

В выпуске IOS5 эта основная функция указана как устаревшая .Кто-нибудь знает, что заменит его?Я предполагаю, что Apple не собирается снимать акселерометр с iPhone 5.

1 Ответ

29 голосов
/ 20 июля 2011

Я еще не использовал iOS 5, но уже в 4.x UIAccelerometer и UIAccelerometerDelegate были заменены платформой CoreMotion. Он более сложный, учитывает сигналы гироскопа и выполняет объединение датчиков, то есть выполняет калибровку для вас, например, вычисление смещения.

По сути, обратный вызов блока CMDeviceMotionHandler теперь эквивалентен. Он называется каждые deviceMotionUpdateInterval секунд или вы можете пойти с вашим собственным циклом таймера и получить данные. Это довольно просто и легко в использовании. Посмотрите на Простое обнаружение движения iPhone и перейдите по трем ссылкам на документы SDK.

Есть три вещи, которые вы должны иметь в виду:

  • Для работы с Device Motion требуется версия iPhone> = 4 или новейшее поколение iPod touch, поскольку оно опирается на поддержку гироскопа
  • При использовании Device Motion вы не должны использовать низкочастотную фильтрацию для извлечения гравитации, потому что это сделано для вас
  • Если вы хотите поддерживать устаревшее оборудование, вам придется работать с необработанными данными. Это делается путем создания CMAccelerometerHandler и вызова startAccelerometerUpdatesToQueue: withHandler: . Затем вы должны извлечь гравитацию с помощью фильтрации нижних частот, как в didAccelerate
...