我正在尝试仅跟踪设备在垂直方向上的移动,即向上和向下的运动。这应该与设备的方向无关。我已经知道或尝试过的事情是:
- 线性加速度由传感器TYPE_LINEAR_ACCELERATION提供,轴为手机轴,因此跟踪任何特定轴并没有区别。
- 我尝试应用旋转向量的转置或逆转(转置或逆转的旋转向量是相同的),然后尝试跟踪线性加速度向量的z方向。似乎没有帮助。
- 我正尝试使用重力值(TYPE_GRAVITY)进行点积以获得加速度的方向,但似乎容易出错。即使我把设备快速移动到上方,它也会显示向下。
dotProduct = vectorA[0]*vectorB[0]+vectorA[1]*vectorB[1] + vectorA[2]*vectorB[2];
cosineVal = dotProduct/(|vectorA|*|vectorB|)
if(cosineVal > 0 ) down else Up.
这种方法有什么缺陷?请帮帮我,我已经卡在这里很长时间了。