Я учусь писать приложение, используя датчик гироскопа в iOS. Существуют ли классы для работы с гироскопом, подобные UIAcceleration / UIAccelerometer / UIAccelerometerDelegate для акселерометра?
iOS Gyroscope API
Ответы (2)
Первый импорт CoreMotion
framework
#import <CoreMotion/CoreMotion.h>
self.motionManager = [[CMMotionManager alloc] init];
//Gyroscope
if([self.motionManager isGyroAvailable])
{
/* Start the gyroscope if it is not active already */
if([self.motionManager isGyroActive] == NO)
{
/* Update us 2 times a second */
[self.motionManager setGyroUpdateInterval:1.0f / 2.0f];
/* Add on a handler block object */
/* Receive the gyroscope data on this block */
[self.motionManager startGyroUpdatesToQueue:[NSOperationQueue mainQueue]
withHandler:^(CMGyroData *gyroData, NSError *error)
{
NSString *x = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.x];
self.gyro_xaxis.text = x;
NSString *y = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.y];
self.gyro_yaxis.text = y;
NSString *z = [[NSString alloc] initWithFormat:@"%.02f",gyroData.rotationRate.z];
self.gyro_zaxis.text = z;
}];
}
}
else
{
NSLog(@"Gyroscope not Available!");
}
Как говорится в коде, сначала я создаю экземпляр менеджера движения. Затем я смотрю, поддерживает ли устройство гироскоп. В противном случае установите интервал обновления гироскопа, а затем зарегистрируйтесь, чтобы получать обновления от гироскопа. С помощью этих обновлений вам необходимо определить собственную логику того, что вы хотите делать со значениями. Вот и все, вам хорошо ...
startGyroUpdatesToQueue
не рекомендуется использовать основную очередь, поскольку это может вызвать задержку. Либо используйте другую очередь, либо просто используйте свойство .gyroData
менеджера движения для получения данных гироскопа. Если вы делаете игру с использованием фреймворков движения, я бы рекомендовал установить интервал 1/60 секунды (чтобы соответствовать частоте кадров), и если у любого из них есть проблема, уменьшите интервал для получения данных гироскопа. .
- person DDPWNAGE; 04.07.2015
Для данных гироскопа вам необходимо использовать CoreMotion. Начните с чтения соответствующий раздел Руководства по обработке событий для iOS. Вам нужно будет работать с двумя классами: CMGyroData, который инкапсулирует данные событий гироскопа, и CMMotionManager, который используется для регистрации событий гироскопа.
Дополнительную информацию можно найти в выбранном ответе на этот вопрос: Образец кода гироскопа Apple