zoukankan      html  css  js  c++  java
  • [ios2][转]iOS摇动检测 (UIAccelerometer)

    加速计(UIAccelerometer)是一个单例模式的类,所以需要通过方法sharedAccelerometer获取其唯一的实例。
    加速计需要设置的主要有两个:
    一个是设置其代理,用以执行获取加速计信息的方法;
     另一个是设置加速计获取信息的频率。 最高支持每秒100次。
    UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
    accelerometer.delegate = self;
    accelerometer.updateInterval = 1.0/30.0f;

    下面是加速计的代理方法,需要符合协议<UIAccelerometerDelegate>.
    -(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
    {
    //    NSString *str = [NSString stringWithFormat:@"x:%g y:%g z:%g",acceleration.x,acceleration.y,acceleration.z];
    //    NSLog(@"%@",str);

        // 检测摇动, 1.5为轻摇,2.0为重摇
    //    if (fabsf(acceleration.x)>1.8||
    //        fabsf(acceleration.y)>1.8||
    //        fabsf(acceleration.z>1.8)) {
    //        NSLog(@"你摇动我了~");
    //    }
        static NSInteger shakeCount = 0;
        static NSDate *shakeStart;
        NSDate *now = [[NSDate alloc]init];
        NSDate *checkDate = [[NSDate alloc]initWithTimeInterval:1.5f sinceDate:shakeStart];
        if ([now compare:checkDate] == NSOrderedDescending || shakeStart == nil) {
            shakeCount = 0;
            [shakeStart release];
            shakeStart = [[NSDate alloc]init];
        }
        [now release];
        [checkDate release];
        
        if (fabsf(acceleration.x)>1.7||
            fabsf(acceleration.y)>1.7||
            fabsf(acceleration.z)>1.7) {
            shakeCount ++;
            if (shakeCount >4) {
                NSLog(@"你摇动我了~");
                shakeCount = 0;
                [shakeStart release];
                shakeStart = [[NSDate alloc]init];
            }
        }
    }

     

  • 相关阅读:
    链队列的实现
    LeetCode——Count Complete Tree Nodes
    LeetCode——Lowest Common Ancestor of a Binary Search Tree
    LeetCode——Palindrome Linked List
    中文乱码问题及其解决办法
    LeetCode——Valid Anagram
    TCP/IP网络知识点总结
    深入理解javascript原型和闭包——从【自由变量】到【作用域链】
    AJAX笔试面试题汇总
    前端开发面试知识点大纲
  • 原文地址:https://www.cnblogs.com/jinjiantong/p/3222254.html
Copyright © 2011-2022 走看看