(/ 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.
Kodunuzu verebilir misiniz, çünkü aynı sorunla karşı karşıyayım. Denedim ama uygulamanızı çökertti. – user2526811
@ user2526811, Bu gece size kodunu göndereceğim, mail adresinizi yazınız –
Cevabınız için teşekkürler. Benim id 'pakshay8800 @ gmail.com' – user2526811