我在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/