2013-01-05 71 views
9

我想創建一個簡單的應用程序,當我從Y軸將手機從起點移動到終點時(例如從a(0,0)點)移動手機時,到b點(0,10),請幫助iOS檢測用戶的移動

演示:

enter image description here

+1

你可以給我你的代碼,因爲我面臨同樣的問題。我嘗試過,但它崩潰了我的應用程序。 – user2526811

+0

@ user2526811,我會在今晚向你發送代碼,發佈你的郵件地址 –

+0

感謝您的回覆。我的ID是'pakshay8800 @ gmail.com' – user2526811

回答

14

需要初始化運動管理器,然後檢查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]; 
    } 
}]; 

注意此代碼假設電話平放或稍微傾斜,並且用戶正在推進(遠離自己,或與移動電話)在縱向模式。

+1

tks約翰,它工作得很好:D –

+1

在背景中不起作用。要跟蹤Go上的用戶位置,我們必須將其啓用後臺。有什麼方法可以實現這一目標嗎? –

+1

@MohammadAbdurraafay而不是在評論中問一個問題,你應該[問一個新的問題](http://stackoverflow.com/questions/ask)來獲得答案,幫助等。 –