2016-05-06 10 views
6

Ich versuche zu erkennen, wenn ein Benutzer ihr iPhone auf ein anderes Objekt stößt, im Gegensatz zu, wenn sie nur ihr Telefon schütteln. Ich kann es scheinbar nicht so perfekt funktionieren lassen, wie ich es will, weil es entweder zu viele Beulen, keine Beulen registriert, oder denkt, dass ein Shake eine Beule ist.CoreMotion Bump vs Shake auf iPhone

Kann jemand meinen Code unten betrachten und Vorschläge anbieten? Ich muss sicher sein, dass das eine oder andere passiert.

// 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"); 
     } 
    }]; 
} 

}

Antwort

-1

Ich bin sicher, dass dies eine andere Antwort ist, aber das kann Ihnen helfen.

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

Es hat eine Blockfunktion wie

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

Für komplettes Beispiel Kasse die git.

+0

Ihre API funktioniert nicht mehr? Haben Sie keinen API-Schlüssel, funktioniert das noch? –

+0

Ich habe es versucht. Es ist nicht mehr kompatibel. –