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

时间:2012-09-13 17:11:28

标签: android orientation sensor android-sensors rotational-matrices

我的问题类似于Changing sensor coordinate system in android

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

这就是我称之为“用户”的坐标系。它与世界坐标系不同,因为用户所面向的风向无关紧要。它与设备坐标不同,因为无论用户如何握住设备都无关紧要。

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

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

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

1 个答案:

答案 0 :(得分:0)

我目前正在研究这个问题,我认为这可能有所帮助: convert device coordinate system to world corrdinate system

我们可以假设在大多数情况下,人们使用手机站立或行走或坐着,这意味着用户坐标系统共享相同的z轴(重力),并且y轴之间的度数固定不同(用户坐标,用户面部前方)和y轴(世界坐标,北方向)。度数的差异可以通过TYPE_MAGNETIC_FIELD sensor获得。因此,我们可以从世界坐标转换为用户坐标。

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