我正在构思一款需要对iPhone加速度计和陀螺仪数据进行精确校准的iPhone应用程序。我将不得不模拟我最终想要执行代码的特定动作。 (想想摇摆,或者撤消)。
有没有一种好方法可以做到这一点?或者你能想到的东西?也许某种方法可以在捕获时生成运动数据的时间/值图表?
答案 0 :(得分:1)
正在捕获移动数据 - 请参阅加速度计图表示例应用,该应用会实时显示数据:http://developer.apple.com/library/ios/#samplecode/AccelerometerGraph/Introduction/Intro.html
数据非常嘈杂 - 例如,陀螺仪和加速度计目前还不够好,无法跟踪手机在本地3d空间中的位置。然而,旋转非常坚固,并且可以非常准确地跟踪设备的方向。您可以获得最佳结果,使旋转数据中的手势不是沿轴移动。或者,就像雅各布詹宁斯所说的那样,沿轴线摇动的基本方向也会起作用。
答案 1 :(得分:0)
加速度计手势识别的一个很好的起点是来自AblePear的Kevin Bomberry的教程: http://blog.ablepear.com/2010/02/iphone-sdk-shake-rattle-roll.html
他为任何轴上的加速度绝对值设置了一个覆盖阈值。我会为在阈值中断期间具有最高加速度的轴(Z POSITIVE,X NEGATIVE等)生成“事件”,并将它们推送到“事件历史”队列中。在每次didAccelerate调用结束时,评估队列中与手势匹配的模式,例如: X正,X负,X正,X负可能被认为是沿该轴的“摇动”。这应该提供几个不同的手势命令。
有关NSMutableArray的简单队列类别,请参阅以下内容: How do I make and use a Queue in Objective-C?