Простое обнаружение движения iPhone

Мне нужно определить, когда гироскоп / акселерометр активирован на определенную величину. В основном для обнаружения движения устройства. Я ничего не знаю о Core Motion.

Может быть, кто-нибудь направит меня на учебник для начинающих или что-то в этом роде.

Заранее спасибо.


person Linuxmint    schedule 06.03.2011    source источник


Ответы (2)


Я думаю, вам нужно использовать Core Motion. Хорошая новость в том, что его не так сложно использовать для вашей проблемной области. Начните читать Руководство по обработке событий, особенно раздел Обработка обрабатываемых данных движения устройства. Если вы просто хотите знать, что было совершено небольшое движение, как вы заявили, вы можете опустить обработку поворота и узкую обработку сигнала в CMDeviceMotion.userAcceleration. Это связано с тем, что каждое вращение также приводит к сигналам акселерометра.

Создайте CMDeviceMotionHandler, как описано в startDeviceMotionUpdatesToQueue: withHandler: Ваш CMDeviceMotionHandler должен делать что-то вроде:

float accelerationThreshold = 0.2; // or whatever is appropriate - play around with different values
CMAcceleration userAcceleration = deviceMotion.userAcceleration;
if (fabs(userAcceleration.x) > accelerationThreshold) 
    || fabs(userAcceleration.y) > accelerationThreshold
    || fabs(userAcceleration.z) > accelerationThreshold) {
    // enter code here
}

В основном это все. Имейте в виду, что у каждого ускорения будет свой аналог. Это означает, что если вы примените силу, чтобы переместить (то есть ускорить) устройство вправо, появится аналог для замедления, чтобы остановить движение и позволить устройству оставаться в новом положении. Таким образом, ваше if условие будет выполняться дважды для каждого движения.

person Kay    schedule 07.03.2011
comment
Ссылка, которую вы дали, отличная! Несмотря на то, что я искал показания движения и читал все соответствующие ссылки на классы - я просто не мог найти такое резюме - спасибо! - person Oded Ben Dov; 07.08.2011
comment
Спасибо за простые и понятные объяснения :) - person Luqman; 30.05.2013
comment
Эта ссылка не работает. Обработка обработанных данных о движении устройства. Не могли бы вы обновить ссылку? - person bpolat; 21.08.2014
comment
На момент написания этого комментария вы можете найти кешированную копию этой статьи здесь. - person henryaz; 29.09.2014

В viewDidAppear станьте первым респондентом:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

И убедитесь, что вы можете быть первым, кто откликнется:

- (BOOL)canBecomeFirstResponder {
    return YES;
}

Затем вы можете реализовать обнаружение движения.

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
    if (event.subtype == UIEventTypeMotion){
        //there was motion
    }
}
person sudo rm -rf    schedule 07.03.2011