在iOS和Android上,Air Gyroscope数据似乎非常不同

时间:2014-02-16 23:24:03

标签: android ios actionscript-3 air gyroscope

我已经创建了一个在Android中使用Gyrosope Native Extension的应用程序,运行得非常好。

然而现在我已经在使用AIR 4.0的iPhone 4(iOS7)上进行了测试,并且陀螺仪性能似乎完全不同,倾斜似乎除了旋转手机之外什么也没做。

有谁知道这些数据在iOS和Android上的运作方式有何重大差异?

我似乎正在考虑尝试使用此http://www.ketzler.de/2011/11/adobe-air-gyroscope-native-extension-with-euler-angles-roll-pitch-yaw-for-ios/

这是现有原生扩展的替代还是补充?

1 个答案:

答案 0 :(得分:0)

使用多个传感器计算设备位置可以获得更好的结果。您引用的扩展是通过iOS SDK中的内置函数实现的。使用可用传感器的融合,您可以从陀螺仪获得快速响应,但使用加速度计和磁力计可以解决漂移问题。

在iOS上,它使用CMAttitude类(这是您提供的使用链接):

https://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMAttitude_Class/Reference/Reference.html

在两个平台上使用这种技术肯定会使读数更加接近,但是在Android上有几种不同的方法,因为您可以访问更多信息。当然,Android上最大的问题是使用了所有不同的硬件,因此传感器都报告了略有不同的范围和值。我发现最好的方法是使用TYPE_ROTATION_VECTOR传感器,然后使用SensorManager.getOrientation函数,如果你是在欧拉角之后。我还尝试了一种混合结果的自定义融合算法。

http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ROTATION_VECTOR

我还建议您查看四元数。这些为设备定位提供了更好的结果,并避免了相关的万向节锁定。

我花了很多时间为distriqt的扩展程序包完成所有这些,我即将发布一个新的DeviceMotion扩展,如果你对此感兴趣的话可以完成所有这些。