我最近在Android Droid上使用Android SDK和Adobe AIR for Android SDK一直在玩Android加速度计。我注意到的是加速度计工作正常,但我想知道是否有可能以某种方式进行补偿,这样我就不必在水平位置使用该设备。换句话说,我想使用加速度计来控制我的视觉显示,但是将其初始化(或以某种方式修改),这样我就不必将它保持完全平坦(不得不靠在手机上很有趣)。
有没有人知道我如何能够舒适地握住设备,比如45度,还是利用加速度计提供前/后读数?这可能吗?有这方面的任何例子吗?
答案 0 :(得分:1)
你需要一些简单的矩阵乘法数学。通过在启动应用程序时将当前矩阵进行“校准”并将其反转,然后将所有后续矩阵与其相乘 - 这将为您提供起始位置的增量。
答案 1 :(得分:0)
很久以前我写过一篇关于相对轮换的应用程序。我已经忘记了代码的作用,但从我看到的情况来看,似乎是 -
1)我使用 - SensorManager.getRotationMatrix(R,I,gravity.clone(),geomagnetic.clone())得到初始旋转矩阵; (重力和地磁是相应的加速和地磁矩阵。不知道为什么我使用克隆但必须有某些原因。) 2)现在在任何阶段,获取当前的旋转矩阵并将其称为R. 3)计算初始矩阵的倒数并将其称为“initialInverse”。 4)将R与InitialInverse相乘(或者反过来,你必须弄明白)。 5)使用SensorManager.getOrientation(delta,values)
获取最终方向我很抱歉,但我完全忘记了上面代码的作用。我想我记得在写这个应用程序的时候在某处阅读Euler Transform这个词,这就是它可能在做什么。不幸的是,我不能给你完整的代码,因为我可能会在市场上发布这个应用程序。但是,如果您需要更多信息,请告诉我们 - 我会查看代码并回复您。
答案 2 :(得分:0)
我在一个类似性质的项目中工作,其中加速度计功能不受位置限制。我的处理方式非常简单,初始化加速度计,默认为当前读数。换句话说,当您将手机放在正确的位置时,按下按钮,按下按钮后,加速度计的当前读数(G的测量值)将作为参考(零值),并在更改时进行更改你高于或低于这些读数...希望这有助于任何人...欢呼