2013-01-05 20 views
9

Y ekseninde telefonumu bir başlangıç ​​noktasından bitiş noktasına, örneğin A noktasından (0,0) hareket ettirdiğimde ekranda basit bir çizgi çizen basit bir uygulama oluşturmak istiyorum b (0, 10) işaret etmek yardım lütfeniOS, kullanıcının hareketini algılar

demo:

enter image description here hareket yöneticisi başlatmak ve daha sonra uygun bir ivme değeri için motion.userAcceleration.y değerini kontrol etmek gerekir

+1

Kodunuzu verebilir misiniz, çünkü aynı sorunla karşı karşıyayım. Denedim ama uygulamanızı çökertti. – user2526811

+0

@ user2526811, Bu gece size kodunu göndereceğim, mail adresinizi yazınız –

+0

Cevabınız için teşekkürler. Benim id 'pakshay8800 @ gmail.com' – user2526811

cevap

14

(/ saniye/saniye metre cinsinden ölçülür). Aşağıdaki örnekte, telefonun oldukça iyi bir ileriye doğru hareket ettiğini bulduğum 0.05'i kontrol ediyorum. Ayrıca, kullanıcı çizimden önce önemli ölçüde yavaşlatana kadar bekle (-Y değeri). Cihazın ayarlanması MotionUpdateInterval, uygulamanızın hızdaki değişikliklere duyarlılığını belirleyecektir. Şu anda 1/60 saniyede örnek alıyor.

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]; 
    } 
}]; 

Not bu kod telefon yatma veya hafif eğimli ve kullanıcının ileriye doğru iterek olduğu (uzakta kendilerinden ya da telefon ile taşıma), dikey modda olduğunu varsayar.

+1

tks John, harika çalışıyor: D –

+1

Arkaplanda çalışmıyor. Kullanıcıların Go üzerindeki konumunu izlemek için, arka planı etkin hale getirdik. Bunu başarabileceğimiz bir yolu var mı? –

+1

@MohammadAbdurraafay Yorumlarda bir soru sormak yerine, [yeni bir soru sorun] (http://stackoverflow.com/questions/ask) yanıtları, yardımları, vs. almanız gerekir. –

İlgili konular