Android 获得垂直于重力方向的加速度,与手机方向无关。

Android 获得垂直于重力方向的加速度,与手机方向无关。,android,accelerometer,android-sensors,magnetometer,sensormanager,Android,Accelerometer,Android Sensors,Magnetometer,Sensormanager,我试图得到垂直于重力方向的两个轴上的加速度,与手机的方向无关,但不太确定如何做到这一点 我一直在研究如何使用磁场和旋转矢量,但没有弄清楚如何达到同样的效果 我只需要xy平面上的加速度,假设重力方向在z平面上,不管手机的方位如何 提前感谢这并不简单: 要使用这种类型的磁场,你应该知道地球磁场在你所在的位置是如何定向的,这不是小事 你可以尝试使用重力和线性加速度:第一个返回重力加速度向量,第二个是设备的加速度,不包括重力,应该是线性加速度=加速度计-重力,但我不知道它有多精确 要使重力在z轴上,你必

我试图得到垂直于重力方向的两个轴上的加速度,与手机的方向无关,但不太确定如何做到这一点

我一直在研究如何使用磁场和旋转矢量,但没有弄清楚如何达到同样的效果

我只需要xy平面上的加速度,假设重力方向在z平面上,不管手机的方位如何

提前感谢

这并不简单:

要使用这种类型的磁场,你应该知道地球磁场在你所在的位置是如何定向的,这不是小事

你可以尝试使用重力和线性加速度:第一个返回重力加速度向量,第二个是设备的加速度,不包括重力,应该是线性加速度=加速度计-重力,但我不知道它有多精确

要使重力在z轴上,你必须旋转重力向量,使其处于0 g的形式。。。实际上,你必须找到旋转矩阵,它把重力向量转换成0 g的形式。更多关于这个

一旦你有了这个矩阵,你把它应用到线性加速度向量上,它的x和y分量就是你要找的

如果你的手机没有这两个传感器,你必须自己计算重力和线加速度:要做到这一点,你可以使用高通滤波器获得线加速度,使用低通滤波器获得重力矢量。更多关于这个