Как заметить быстрое движение вперед с устаревшим didAccelerate? - PullRequest
0 голосов
/ 28 декабря 2011

Что я хочу сделать, это прочитать acceleration.y и сделать что-то вроде:

if (acceleration.y > 0.8) {
   // Do something
}

Поскольку didAccelerate устарел, мне интересно, как получить значение y:

motionManager = [[[CMMotionManager alloc] init] autorelease];
motionManager.accelerometerUpdateInterval = kUpdateInterval;

if (motionManager.accelerometerAvailable) {
    [motionManager startAccelerometerUpdates];
}
else {
    //this device doesn't have accelerometer notice somewhere??
}

- (void)startAccelerometerUpdates {
 // READ Y-VALUE?????
}

Я хочу использовать необработанные данные акселерометра, чтобы приложение также работало на 3GS.Можно ли прочитать значение Y?

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

РЕДАКТИРОВАТЬ: ответ ниже не рекомендуется, проверьте эти сообщения для правильного пути.


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

Для этого используйте одноэлементный экземпляр UIAccelerometer, например, в вашем AppDelegate

//in your launching method
    UIAccelerometer * accel = [UIAccelerometer sharedAccelerometer];
    accel.delegate = self;

//delegate method:
-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
    // use the y-property of the acceleration
}
0 голосов
/ 28 декабря 2011

Посмотрите на ссылку на класс CMMotionManager и раздел поиска под названием «Передача обновлений движения через указанные интервалы». В пуле "Акселерометр" написано

Установите свойство accelerometerUpdateInterval, чтобы указать интервал обновления. Вызовите startAccelerometerUpdatesToQueue: withHandler: метод, передавая блок типа CMAccelerometerHandler. Данные акселерометра передаются в блок как объекты CMAccelerometerData.

CMAccelerometerData имеет ссылку на CMAcceleration, которая является структурой, которая содержит ускорение на ось.

...