2016-06-23 2 views
0

Я хочу обнаружить дрожание устройства с использованием рамки coreMotion для iOS 7. Может ли кто-нибудь помочь мне в этом, как это сделать?Обнаружение встряскивания с помощью CoreMotion

Я написал код, описанный ниже в моем viewDidAppear

CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 
    motionManager.deviceMotionUpdateInterval = 1.0/60.0; 

__block double myAcceleration; 
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] 
            withHandler:^(CMDeviceMotion *motion, NSError *error) 
{ 
    myAcceleration = motion.userAcceleration.y; 
    CATransform3D transform; 
    transform = CATransform3DMakeRotation(
              motion.attitude.pitch, 1, 0, 0); 
    transform = CATransform3DRotate(transform, 
            motion.attitude.roll, 0, 1, 0); 
    transform = CATransform3DRotate(transform, 
            motion.attitude.yaw, 0, 0, 1); 
} 
]; 

но не обнаруживает дрожание.

+0

Эй, пожалуйста, поделитесь своим ответом, если кто-нибудь знают о дрожании в ИО 7 и выше с основным движением – Sudha

ответ

3
#define accelerationThreshold 0.30 

- (void)motionMethod:(CMDeviceMotion *)deviceMotion 

{ 

CMMotionManager *motionManager = [[CMMotionManager alloc] init]; 

    CMAcceleration userAcceleration = deviceMotion.userAcceleration; 
    if (fabs(userAcceleration.x) > accelerationThreshold || fabs(userAcceleration.y) > accelerationThreshold || fabs(userAcceleration.z) > accelerationThreshold) 
    { 
     float sensitivity = 1; 
     float x1 = 0, x2 = 0, y1 = 0, y2 = 0, z1 = 0, z2 = 0; 

     double totalAccelerationInXY = sqrt(userAcceleration.x * userAcceleration.x + 
              userAcceleration.y * userAcceleration.y); 

     if (0.85 < totalAccelerationInXY < 3.45) { 
      x1 = userAcceleration.x; 
      y1 = userAcceleration.y; 
      z1 = userAcceleration.z; 

      float change = fabs(x1-x2+y1-y2+z1-z2); 
      if (sensitivity < change) { 

       // print change in position in coordinates. 
       NSLog (@"total=%f x=%f y=%f z=%f timeStamp:%f, UpTime:%f", totalAccelerationInXY, userAcceleration.x, userAcceleration.y, userAcceleration.z, deviceMotion.timestamp, [[NSProcessInfo processInfo] systemUptime]); 

       x2 = x1; 
       y2 = y1; 
       z2 = z1; 
      } 
     } 
    } 
} 
+0

работали для меня, чтобы обнаружить дрожание ИО устройств. – Sudha

Смежные вопросы