Android Sensors (3) 传感器坐标系统
传感器坐标系统
通常,sensor framework使用一个标准的三轴坐标系统来表达数值。
对于大多数传感器来说,坐标系统是相对于设备屏幕来说的。
当一个设备被放在其默认的方向上时,X轴是水平指向右的,Y轴是垂直向上的,Z轴是指向屏幕正面之外的,即屏幕背面是Z的负值。
如图:
这个坐标系被下面的传感器所使用:
比较重要的一点就是,在屏幕方向改变的时候,坐标系中的轴是不会交换的。
即,当设备移动的时候传感器的坐标系不会改变。这一点和OpenGL坐标系统一样。
需要明白的另一点是,你不能假设设备的自然(默认)方向是竖直的(portrait),自然方向对于很多的平板设备来说是横向的(landscape)。
坐标系永远是基于设备的自然方向的。
最后一点,如果你的应用需要将传感器数据和屏幕显示匹配:
你需要使用 getRotation()
方法来决定屏幕的旋转值,然后使用 remapCoordinateSystem()
方法将传感器坐标映射到屏幕坐标上。
即便你的manifest只指定了横向显示,你也需要做这些。
如果想知道更多关于传感器坐标系统的信息,包括如何处理屏幕旋转,可以看看 One Screen Turn Deserves Another。
有一些传感器和方法使用相对于世界的参考帧的坐标系。
这些传感器和方法返回的数据是反应设备运动或设备相对于地球的位置的信息。更多信息,请见getOrientation() 方法,getRotationMatrix() 方法,Orientation Sensor, 和 Rotation Vector Sensor。
参考资料
API Guides:Sensors Overview
http://developer.android.com/guide/topics/sensors/sensors_overview.html