代码之家  ›  专栏  ›  技术社区  ›  Shawn

使用安卓加速计而不使设备变平

  •  2
  • Shawn  · 技术社区  · 15 年前

    我最近一直在使用Android SDK和adobeairforandroidsdk的Android加速器。我注意到加速计工作正常,但我想知道是否有可能以某种方式进行补偿,这样我就不必在水平位置使用该设备。换言之,我想使用加速度计来控制我的视觉显示,但初始化它(或以某种方式修改),这样我就不必把它保持在完全平坦的位置(靠在电话上没有多少乐趣)。

    有人知道我如何能把设备舒适地握在手中,比如说45度,并且仍然使用加速计来提供向前/向后的读数吗?这可能吗?有这方面的例子吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   EboMike    15 年前

    你需要一些简单的矩阵乘法运算。”校准“当你启动应用程序时,取当前矩阵并将其反转,然后将所有后续矩阵与之相乘,这将给你一个开始位置的增量。

        2
  •  0
  •   Abhinav Manchanda    15 年前

    我很久以前就写过一份关于相对旋转的申请。我忘了密码是怎么做的,但从我看来-

    1)我使用-SensorManager.get rotation matrix(R,I,gravity.clone(),geomagnetic.clone());(重力和地磁是各自的加速度和地磁矩阵)。不知道我为什么用克隆人,但肯定有原因。) 2)现在在任何阶段,得到当前的旋转矩阵,称之为R。 3)计算初始矩阵的逆,称之为“初始逆”。 4)将R与initialInverse相乘(或者反过来,你必须计算出来)。 5)使用SensorManager.Get orientation(delta,values)获取最终方向

    对不起,我完全忘了上面的代码是做什么的了。我想我记得我在写这个应用程序的时候读过Euler Transform这个词,所以它可能就是这么做的。不幸的是,我不能给你完整的代码,因为我可能会在市场上发布这个应用程序。不过,如果你需要更多的信息,请告诉我-我会调查代码,然后再给你。

        3
  •  0
  •   zatoitche    15 年前

    我在一个类似的项目中工作,加速度计的功能不受位置的限制。我的处理方法非常简单,用当前读数作为默认值初始化加速计。换句话说,你有一个按键,当你把手机放在正确的位置时,按下这个按键,加速计的当前读数(G的测量值)将作为你的参考(零值),当你高于或低于这些读数时,进行更改。。。希望这能帮助任何人。。。干杯