Android将设备坐标系转换为"用户"坐标系

Nin*_*off 5 android sensor orientation rotational-matrices android-sensors

我的问题类似于在android中更改传感器坐标系

我希望无论设备方向如何,都能够将用户的动作相互比较.因此,当用户以纵向方向拿出电话并弯曲他的手臂时,加速度读数与他在风景中拿出手机然后将手臂向相同方向弯曲时的读数相同.

这就是我所说的"用户"坐标系.它与世界坐标系不同,因为用户面向的风向应该无关紧要.它与设备坐标不同,因为用户如何握住他的设备无关紧要.

在我的应用中,在每次移动之前进行校准步骤是可以接受的,因此可以确定基础/静止方向矩阵.它可能只是将第一个运动的矩阵与第二个运动的倒数相乘(然后是新值?)

提到的问题中的答案似乎是正确的,但我需要一个更具体的解释,实际的代码样本将是理想的.

注意remapCoordinateSystem是不够的,它只接受直角.我需要能够处理小的偏差,因为设备被绑在手腕上,手腕可能并不总是与手臂成直角.

小智 0

我目前正在解决这个问题,我认为这可能会有所帮助:\n将设备坐标系转换为世界坐标系

\n\n

我们可以假设,大多数时候,人们是站着、走着、坐着使用手机,这意味着用户坐标系共享相同的 z 轴(重力)\xef\xbc\x8c,并且 y 之间有固定的度数差。 - 轴(用户坐标,用户脸部正面)和 y 轴(世界坐标,北向)。度数差异可以通过TYPE_MAGNETIC_FIELD 传感器获得。这样我们就可以从世界坐标转换到用户坐标。

\n\n

用户躺在床上使用手机会怎么样?我认为对于这种情况,需要通过定义用户坐标的 y 轴来进行预校准,就像告诉手机哪个方向是用户脸部正面的运动一样。

\n