iOS обнаруживает движение пользователя
Я хочу создать простое приложение, которое рисует простую линию на экране, когда я перемещаю свой телефон по оси Y из начальной точки в конечную точку, например, из точки a(0,0) в точку b(0, 10). пожалуйста помоги
демо:
1 ответ
Вам нужно инициализировать менеджер движения, а затем проверить motion.userAcceleration.y
значение для соответствующего значения ускорения (измеряется в метрах / секунду / секунду).
В приведенном ниже примере я проверяю на 0,05, что я нашел довольно приличное движение вперед телефона. Я также жду, пока пользователь значительно замедлится (значение -Y), прежде чем рисовать. Настройка устройства MotionUpdateInterval будет определять реагирование вашего приложения на изменения скорости. Прямо сейчас это выборка в 1/60 секунды.
motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 1.0/60.0;
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
NSLog(@"Y value is: %f", motion.userAcceleration.y);
if (motion.userAcceleration.y > 0.05) {
//a solid move forward starts
lineLength++; //increment a line length value
}
if (motion.userAcceleration.y < -0.02 && lineLength > 10) {
/*user has abruptly slowed indicating end of the move forward.
* we also make sure we have more than 10 events
*/
[self drawLine]; /* writing drawLine method
* and quartz2d path code is left to the
* op or others */
[motionManager stopDeviceMotionUpdates];
}
}];
Обратите внимание, что в этом коде предполагается, что телефон лежит ровно или слегка наклонен и что пользователь продвигается вперед (от себя или перемещается с телефоном) в портретном режиме.