【发布时间】:2011-04-13 01:05:31
【问题描述】:
我正在构思一款 iPhone 应用,它需要对 iPhone 的加速度计和陀螺仪数据进行精确校准。我将不得不模拟我最终想要执行代码的特定动作。 (想想摇一摇,或撤消)。
现在有没有好的方法来做到这一点?或者你能想出什么?也许某种方式可以在捕获运动数据时生成时间/值图?
【问题讨论】:
-
我也会对这样的东西感兴趣!
标签: iphone objective-c cocoa-touch
我正在构思一款 iPhone 应用,它需要对 iPhone 的加速度计和陀螺仪数据进行精确校准。我将不得不模拟我最终想要执行代码的特定动作。 (想想摇一摇,或撤消)。
现在有没有好的方法来做到这一点?或者你能想出什么?也许某种方式可以在捕获运动数据时生成时间/值图?
【问题讨论】:
标签: iphone objective-c cocoa-touch
正在捕获的运动数据 - 请参阅加速度计图形示例应用程序,它会实时显示数据:http://developer.apple.com/library/ios/#samplecode/AccelerometerGraph/Introduction/Intro.html
数据非常嘈杂——例如,陀螺仪和加速度计目前还不够好,无法跟踪手机在本地 3D 空间中的位置。然而,旋转非常稳定,并且可以非常准确地跟踪设备的方向。使用旋转数据而不是沿轴移动来制作手势可能会获得最佳效果。或者,像 Jacob Jennings 所说的那样,沿轴摇晃等基本方向会起作用。
【讨论】:
加速度计手势识别的一个很好的起点是 AblePear 的 Kevin Bomberry 的本教程: http://blog.ablepear.com/2010/02/iphone-sdk-shake-rattle-roll.html
他为任何轴上的加速度绝对值设置了一个全面阈值。我将为在阈值突破期间具有最高加速度的轴(Z POSITIVE、X NEGATIVE 等)生成一个“事件”,并将它们推送到“事件历史”队列中。在每个 didAccelerate 调用结束时,评估队列中与手势匹配的模式,例如: X POSITIVE, X NEGATIVE, X POSITIVE, X NEGATIVE 可能被认为是沿该轴的“摇动”。这应该提供几个不同的手势命令。
请参阅以下内容,了解 NSMutableArray 中添加的简单队列类别: How do I make and use a Queue in Objective-C?
【讨论】: