我在2种不同的设备(Elocity A7和Archos 7 Home平板电脑)上测试了加速度计的输出,但传感器似乎给出了不同的结果。我已将其编程为设置为横向模式,但x和y轴似乎是两个设备之间的对立面。垂直于地面保持时,x轴返回10,而Archos X轴返回0。Elocity数位板是android 2.2,而Archos是2.1。有人能指出我正确的方向,是如何从这两个设备之间的同步中获得来自加速度计的方向?

最佳答案

实际上,加速度计轴相对于设备的默认方向。

这里是如何处理的:

static void canonicalOrientationToScreenOrientation(
         int displayRotation, float[] canVec, float[] screenVec)
{
    final int axisSwap[][] = {
    {  1,  -1,  0,  1  },     // ROTATION_0
    {-1,  -1,  1,  0  },     // ROTATION_90
    {-1,    1,  0,  1  },     // ROTATION_180
    {  1,    1,  1,  0  }  }; // ROTATION_270

    final int[] as = axisSwap[displayRotation];
    screenVec[0]  =  (float)as[0] * canVec[ as[2] ];
    screenVec[1]  =  (float)as[1] * canVec[ as[3] ];
    screenVec[2]  =  canVec[2];
}

该解决方案由NVidia提供。检查他们关于Android的white paper
加速度计的更多详细信息。

关于android - 来自Android加速度计的方向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5877780/

10-11 20:05