我试图获得垂直于重力方向的两个轴上的加速度,而与手机的方向无关,但不太确定如何做到这一点,
我一直在研究使用 TYPE_MAGNETIC_FIELD 和 TYPE_ROTATION_VECTOR 但无法弄清楚如何实现相同的目标。
我只需要 xy 平面中的加速度,假设重力方向在 z 平面中,而与手机方向无关。
提前致谢
我试图获得垂直于重力方向的两个轴上的加速度,而与手机的方向无关,但不太确定如何做到这一点,
我一直在研究使用 TYPE_MAGNETIC_FIELD 和 TYPE_ROTATION_VECTOR 但无法弄清楚如何实现相同的目标。
我只需要 xy 平面中的加速度,假设重力方向在 z 平面中,而与手机方向无关。
提前致谢
这不简单:)
要使用 TYPE_MAGNETIC_FIELD,您应该知道地球磁场在您所在位置的定向方式,这并非易事。
您可以尝试使用 TYPE_GRAVITY 和 TYPE_LINEAR_ACCELERATION:第一个返回重力加速度矢量,第二个返回设备的加速度,不包括重力(它应该类似于 LINEAR_ACCELERATION = ACCELEROMETER - GRAVITY,但我不知道它有多精确) .
要在 z 轴上获得重力,您必须执行重力矢量的旋转以使其形式为 (0 0 g)...实际上您必须找到将重力矢量转换为 (0 0克)。更多关于这里(维基百科)。
一旦你有了这个矩阵,你就可以把它应用到线性加速度向量上,它的 x 和 y 分量就是你要找的分量。
如果您的手机没有这两个传感器,则您必须自己计算重力和线性加速度:为此,您可以实现一个高通滤波器来获得线性加速度,并实现一个低通滤波器来获得重力矢量。更多关于这个here。