iOS 5 检测重复/连续摇晃

Posted

技术标签:

【中文标题】iOS 5 检测重复/连续摇晃【英文标题】:iOS 5 Detect Repeating/Continuous Shake 【发布时间】:2012-01-16 22:14:24 【问题描述】:

我正在编写一个应用程序,它不仅需要检测用户摇晃一次,而且需要持续检测。这个想法是声音会在一次摇晃时播放一次,如果设备持续摇晃,声音会循环播放。

我已经使用 Shake API 和 Accelerometer API 对其进行了测试,但都没有完全符合我的要求。这是我到目前为止所得到的:

- (void)playAudioFile

    soundFile = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"boing" ofType:@"wav"]];
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFile error:nil];
    [audioPlayer setDelegate:self];
    [audioPlayer play];


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

    if (acceleration.x > 0.5 || acceleration.y > 0.5 || acceleration.z > 0.5) 
        [self playAudioFile];
        NSLog(@"Trigger @ 0.5x");
    

【问题讨论】:

尝试一下苹果的shake to shuffle 功能,你会发现即使这样也不能可靠地重现。有时需要剧烈摇晃,有时只需轻轻振动即可。如果您有多个不同代的 iphone,则差异会更加明显。我想你会在自己的实现中遇到同样的问题。 请注意,accelerometer:didAccelerate:ios 5 起已弃用。 【参考方案1】:

看起来苹果有一个摇晃的手势。看看这是否有帮助:

http://developer.apple.com/library/ios/#documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/MotionEvents/MotionEvents.html

【讨论】:

以上是关于iOS 5 检测重复/连续摇晃的主要内容,如果未能解决你的问题,请参考以下文章

检测列表中的连续整数[重复]

如何使用 iOS 9.2 新的“连续手指检测”Touch ID 功能

从 SQL db 中连续检测 2 个重复值,否则更新插入(使用 python)

我们如何以编程方式检测运行设备的iOS版本? [重复]

给定触摸点列表,如何检测摇晃手势?

ios检测心率[重复]