2016-05-06 1 views
6

J'essaie de détecter quand un utilisateur cogne son iPhone sur un autre objet par rapport à quand ils secouent simplement leur téléphone. Je n'arrive pas à le faire fonctionner comme je le veux, parce qu'il enregistre trop de bosses, pas de bosses, ou pense qu'un tremblement est une bosse. Est-ce que quelqu'un peut regarder mon code ci-dessous et offrir des suggestions? Je dois être sûr que l'un ou l'autre arrive.CoreMotion Bump vs Shake sur l'iPhone

// SHAKING 
- (void) motionEnded: (UIEventSubtype) motion withEvent:(UIEvent *)event 
{ 
if (motion == UIEventSubtypeMotionShake) 
{ 
    [self setNumberOfShakes: [self numberOfShakes] + 1]; 
    [self reloadAllTapShakeData]; 
} 
} 

// TAPPING & BUMPING 
- (void) setupAccelerometerMonitoring 
{ 
[self setManager: [[CMMotionManager alloc] init]]; 
if ([[self manager] isDeviceMotionAvailable]) 
{ 
    [[self manager] setDeviceMotionUpdateInterval: 0.02]; 
    [[self manager] startDeviceMotionUpdatesToQueue: [NSOperationQueue mainQueue] withHandler: ^(CMDeviceMotion * _Nullable motion, NSError * _Nullable error) 
    { 
     //NSLog(@"x = %f | y = %f | z = %f", [motion userAcceleration].x, [motion userAcceleration].y, [motion userAcceleration].z); 
     if (([motion userAcceleration].x > .50 && [motion userAcceleration].x < 1) 
      || ([motion userAcceleration].y > .70 && [motion userAcceleration].x < 1) 
      || ([motion userAcceleration].z > .80 && [motion userAcceleration].z < 1)) 
     { 
      NSLog(@"TAPPED ON ANOTHER OBJECT"); 
     } 
    }]; 
} 

}

Répondre

-1

Je suis sûr que ce soit une réponse différente mais cela peut vous aider.

https://github.com/bumptech/bump-api-ios

Il a une fonction de bloc comme

[[BumpClient sharedClient] setBumpEventBlock:^(bump_event event) { 
     switch(event) { 
      case BUMP_EVENT_BUMP: 
       NSLog(@"Bump detected."); 
       break; 
      case BUMP_EVENT_NO_MATCH: 
       NSLog(@"No match."); 
       break; 
    } 
}]; 

Pour checkout exemple complet du git.

+0

Leur API ne fonctionne plus? N'ayant pas de clé API, cela fonctionnera-t-il encore? –

+0

Je l'ai essayé. Ce n'est plus compatible. –