传感器的坐标系统
通常情况,传感器框架使用标准的3轴坐标系统来表达数据值。对于大多数传感器,坐标系统是相对与设备被保持在默认方向时的设备的屏幕来定义的(如图1)。当设备被保持在默认方向时,X轴是水平向右、Y轴是垂直向上、Z轴是指向屏幕面板的外部。在这个系统中,背对着屏幕的Z轴坐标是负值。该坐标系统被下列传感器使用:
1.加速度传感器
2.重力传感器
3.陀螺仪
4.线性加速传感器
5.磁力仪
图1.传感器API使用的坐标系统。
要理解的最重要的一点是,在设备屏幕的方向发生变化时,坐标系统的各坐标轴不会发生变化,也就是说传感器的坐标系统不会因设备的移动而改变。这种行为与OpenGL坐标系统的行为相同。
另外要理解的一点是,应用程序不要假设设备的自然(默认)方向是纵向的。对于很多平板设备的自然方向是横向的。传感器坐标系统总基于设备的自然方向。
最后,如果你的应用程序要把传感器的数据跟屏幕上的显示相匹配,那么就要使用getRotation()方法来判断屏幕的旋转性,然后使用remapCoordinateSystem()方法把传感器坐标映射到屏幕的坐标上。即使在你的清单中指定了只是纵向显示,你也要这么做。
注意:有些传感器和方法使用的坐标系统是相对与全球参照系(不是设备参照系)。这些传感器和方法返回的数据是相对与地球的设备运动或设备位置。