用UIAccelerometerDelegate处理摇动

@interface ViewController : UIViewController<UIAccelerometerDelegate>


- (void)loadView

{

    ......

UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];

    accelerometer.delegate = self;

    accelerometer.updateInterval = 1.0/10.0;

}


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

{

    static NSInteger shakeCount = 0 ;

    static NSDate* shakeStart ;

    

    NSDate* now = [[NSDate alloc] init];

    NSDate* checkDate = [[NSDate alloc] initWithTimeInterval:1.0f // 1秒内

                                                   sinceDate:shakeStart];

    

    if ([now compare:checkDate] == NSOrderedDescending || shakeStart == nil)

    {

        shakeCount = 0 ;

        shakeStart = [[NSDate alloc] init];

    }

    

    if (fabs(acceleration.x) > 2.0||

        fabs(acceleration.y) > 2.0||

        fabs(acceleration.z) > 2.0)

    {

        shakeCount ++ ;

        if (shakeCount > 2) // 2次

        {

            shakeCount = 0 ;

            shakeStart = [[NSDate alloc] init];

           

            UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示"

                                                          message:@"刚刚摇动了一下"

                                                         delegate:nil

                                                cancelButtonTitle:@"确定"

                                                otherButtonTitles:nil];

            [alert show];

            [alert release];

            

     

        }

    }

}


上面的代码检查在1秒内检测到2次认定为摇动。

可以检查比1.5大的绝对值来检测细微摇动,检查比2.0大的值来检测强烈摇动。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值