Чтение онлайн

на главную

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

Гироскоп, имеющийся в некоторых устройствах с iOS, может регистрировать такие движения. И мы можем писать более гладкие и безошибочные программы обнаружения движения. Обычно такие возможности полезны в играх, так как при их программировании разработчику зачастую требуется узнать не только о том, как устройство движется по осям X, Y и Z — эти данные можно получить от акселерометра, — но и о том, движется ли устройство по этим осям относительно Земли. А вот для этого уже нужен гироскоп.

Программист может пользоваться

фреймворком Core Motion для доступа к информации, поступающей как от акселерометра, так и от гироскопа (при их наличии). Фреймворк Core Motion применяется во всех разделах этой главы. При работе с новым компилятором LLVM, чтобы связать новое приложение с системным фреймворком, вам всего лишь потребуется импортировать этот фреймворк в верхней части заголовочных файлов и файлов реализации, а компилятор сам выполнит все необходимые операции для импорта фреймворка в приложение.

Эмулятор iOS не может имитировать работу акселерометра и гироскопа. Правда, в эмуляторе iOS можно имитировать встряхивание, выбрав команду Hardware — Shake Gesture (Оборудование — Жест встряхивания) (рис. 18.1).

Рис. 18.1. Параметр Shake Gesture (Жест встряхивания) в эмуляторе iOS

18.1. Обнаружение доступности акселерометра

Постановка задачи

В вашей программе требуется определить, имеется ли в устройстве акселерометр.

Решение

Для обнаружения акселерометра пользуйтесь методом isAccelerometerAvailable класса CMMotionManager. Метод isAccelerometerActive также позволяет узнать, посылает ли акселерометр в данный момент уведомления вашей программе.

Сначала убедимся, что импортировали необходимые заголовочные файлы:

#import «AppDelegate.h»

#import <CoreMotion/CoreMotion.h>

@implementation AppDelegate

Далее проверим, что присутствие акселерометра указано в файле реализации делегата нашего приложения:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

CMMotionManager *motionManager = [[CMMotionManager alloc] init];

if ([motionManager isAccelerometerAvailable]){

NSLog(@"Accelerometer is available.");

} else{

NSLog(@"Accelerometer is not available.");

}

if ([motionManager isAccelerometerActive]){

NSLog(@"Accelerometer is active.");

} else {

NSLog(@"Accelerometer is not active.");

}

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Итак,

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

Если запустить этот код в эмуляторе iOS, то в окне консоли появятся примерно такие сообщения:

Accelerometer is not available. // акселерометр недоступен

Accelerometer is not active. // акселерометр неактивен

При запуске такого же кода на новом iPhone получим такие значения:

Accelerometer is available. // акселерометр доступен

Accelerometer is not active. // акселерометр неактивен

Обсуждение

В устройстве с операционной системой iOS может быть встроенный акселерометр. Поскольку мы не можем с уверенностью сказать, в каких устройствах с iOS имеется такое оборудование, а в каких — нет, перед использованием акселерометра целесообразно проверить, доступен ли он.

Чтобы проверить наличие этого оборудования, нужно инстанцировать объект типа CMMotionManager и получить доступ к его методу isAccelerometerAvailable. Это метод логического типа, он возвращает значение YES, если акселерометр доступен, и NO, если он отсутствует.

Кроме того, можно узнать о том, посылает ли акселерометр обновления вашей программе в настоящий момент (соответственно, активен ли он), воспользовавшись методом isAccelerometerActive класса CMMotionManager. О том, как получать данные от акселерометра, мы поговорим в разделе 18.3.

См. также

Раздел 18.3.

18.2. Обнаружение доступности гироскопа

Постановка задачи

В вашей программе требуется определить, имеется ли в устройстве гироскоп.

Поделиться:
Популярные книги

Ретроградный меркурий

Рам Янка
4. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ретроградный меркурий

Я еще не барон

Дрейк Сириус
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще не барон

Полковник Империи

Ланцов Михаил Алексеевич
3. Безумный Макс
Фантастика:
альтернативная история
6.58
рейтинг книги
Полковник Империи

Бремя империи

Афанасьев Александр
Бремя империи - 1.
Фантастика:
альтернативная история
9.34
рейтинг книги
Бремя империи

Инферно

Кретов Владимир Владимирович
2. Легенда
Фантастика:
фэнтези
8.57
рейтинг книги
Инферно

Адмирал южных морей

Каменистый Артем
4. Девятый
Фантастика:
фэнтези
8.96
рейтинг книги
Адмирал южных морей

Защитник

Астахов Евгений Евгеньевич
7. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Защитник

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3

Мир-о-творец

Ланцов Михаил Алексеевич
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Мир-о-творец

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Я – Орк. Том 4

Лисицин Евгений
4. Я — Орк
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я – Орк. Том 4

Хозяйка лавандовой долины

Скор Элен
2. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Хозяйка лавандовой долины

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9