如何在android中实现'可校准'方向侦听器?

问题描述:

请看here的编码。如何在android中实现'可校准'方向侦听器?

为了总结上述链接中的代码,代码声明了一个接口'OrientationListener'和'一个类'OrientationManager'。 'OrientationManager'侦听'SensorEvent'并且在'OrientationListenor','onTopUp()','onRightUp()','onBottomUp()'和'onLeftUp()'中调用其中一种被擦掉的方法if设备的顶部,右侧,底部或左侧面朝上。

如果您认为用户只使用他们的设备,使设备的xy坐标与地面平行,则此功能非常有用。实际情况是,用户通常在天使使用他们的设备时会坐下来,或者躺着时把手机放倒。

如何修改此代码以允许用户“校准”他们的手机?

帮助非常感谢,这是我第二天看到没有结果。

@Gallal,我想你在上一个问题中已经得到了这个问题的答案?但是,对于这里描述的这个问题(即,确定哪一边是“向上”,无论多少),您可以考虑使用加速度计读数而不是旋转矩阵。再一次,请阅读Calibrate的加速器,并将您读取的3个重力组件存储为Axi, Ayi, Azi。现在,假设设备始终“面朝上”,那么您可以比较当前的加速度读数和最初的加速度读数,以确定哪一侧“向上”(重力分量变小)和哪一侧“向下”(一个重力分量变大的地方)。