iOS 如何测试是否是晃屏

APP STORE上的很多软件,如打火机啊蜡烛等效果利用的
加速计  或 Shake 摇动侦测  等 开发思路分享:
摇晃前的预设文字:没事
用力摇晃后画面将显示为:摇动

程序代码:
AccelerometerDemoViewController.h

  
#import

@interface AccelerometerDemoViewController : UIViewController {
        IBOutlet UILabel *mylabel;
}

@property (nonatomic,retain) UILabel *mylabel;

@end

AccelerometerDemoViewController.m


@implementation AccelerometerDemoViewController

@synthesize mylabel;

– (void)viewDidLoad {
        UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
        accelerometer.delegate = self;
        accelerometer.updateInterval =  1.0f/60.0f;
    [super viewDidLoad];        
}

– (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{
        
        static NSInteger shakeCount=0;
        static NSDate *shakeStart;
        
        NSDate *now=[[NSDate alloc] init];
        //  摇晃 2秒内
        NSDate *checkDate=[[NSDate alloc] initWithTimeInterval:2.0f sinceDate:shakeStart];
        
        //超过2秒  重计算晃动次数
        if ([now compare:checkDate]==NSOrderedDescending||shakeStart==nil){
                shakeCount=0;
                [shakeStart release];
                shakeStart=[[NSDate alloc] init];                                
        }
        
        [now release];
        [checkDate release];
        
        // 三轴摇晃的G力超过2则 列入计次
        if (fabsf(acceleration.x)>2.0 || fabsf(acceleration.y)>2.0|| fabsf(acceleration.z)>2.0){
                shakeCount++;
                
                //2秒内侦测到4次则判定为Shake摇晃手机
                if (shakeCount>4){
                        shakeCount=0;
                        [shakeStart release];
                        shakeStart=[[NSDate alloc] init];
                        
                        //画面显示摇动文字
                        mylabel.text=@”地震了”;
                        
        //设定2秒后自动还原                
        [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(cleartext) userInfo:nil repeats:NO];
                }
        }
}                
                        
-(void)cleartext{
        mylabel.text=@”没现象”;
}

来源:D_Shine

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2012年2月5日
下一篇 2012年2月5日

相关推荐