Shake !

Posted on sexta-feira, julho 03, 2009 -

Como detectar um balanço no iPhone ?
Pesquisei um pouco para atender a pedidos de alunos em aula e achei algumas classes que usam C, mexi um pouco e alterei o conceito, e criei uma forma em Cocoa, segue código pros curiosos:

Depois de chamar pelo acelerometro*, no delegate dele use o seguinte:

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{

UIAccelerationValue length, x, y, z;

[myAccelerometer insertObject:[[NSNumber alloc] initWithFloat:(acceleration.x * 0.1 + [[myAccelerometer objectAtIndex:0] floatValue] * (1.0 - 0.1))] atIndex:0];
[myAccelerometer insertObject:[[NSNumber alloc] initWithFloat:(acceleration.y * 0.1 + [[myAccelerometer objectAtIndex:0] floatValue] * (1.0 - 0.1))] atIndex:1];
[myAccelerometer insertObject:[[NSNumber alloc] initWithFloat:(acceleration.z * 0.1 + [[myAccelerometer objectAtIndex:0] floatValue] * (1.0 - 0.1))] atIndex:2];

x = acceleration.x - [[myAccelerometer objectAtIndex:0] floatValue];
y = acceleration.y - [[myAccelerometer objectAtIndex:0] floatValue];
z = acceleration.z - [[myAccelerometer objectAtIndex:0] floatValue];

length = sqrt(x * x + y * y + z * z);

if(length >= 2.0) {
NSLog(@"UHHHH Vibrei!!!!");

}

*Para instanciar o acelerometro com o delegate sendo a propria classe:
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / 25)];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];

Recent Posts

Followers