Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中的传感器坐标系';我不能改变,是吗?_Android_Android Sensors_Tilt Sensor - Fatal编程技术网

Android中的传感器坐标系';我不能改变,是吗?

Android中的传感器坐标系';我不能改变,是吗?,android,android-sensors,tilt-sensor,Android,Android Sensors,Tilt Sensor,我在很多地方读到这样的内容:“API用于设备自然定向的传感器坐标系不会随着设备的移动而改变,与OpenGL坐标系相同。” 现在,我得到了与此图像相同的读数: 我不明白的是:如果旋转手机时坐标系不变(屏幕始终面向用户),重力应始终施加在Y轴上。它应该只改变轴,如果我把手机放在一个位置,屏幕不再面向用户,就像放在一张桌子上,重力应该应用在Z轴上 我的理解有什么问题 谢谢!Guillermo。当设备的屏幕方向改变时,轴将交换。根据你引用的文章: 然而,Android sensor API将传感器坐标空

我在很多地方读到这样的内容:“API用于设备自然定向的传感器坐标系不会随着设备的移动而改变,与OpenGL坐标系相同。”

现在,我得到了与此图像相同的读数:

我不明白的是:如果旋转手机时坐标系不变(屏幕始终面向用户),重力应始终施加在Y轴上。它应该只改变轴,如果我把手机放在一个位置,屏幕不再面向用户,就像放在一张桌子上,重力应该应用在Z轴上

我的理解有什么问题


谢谢!Guillermo。

当设备的屏幕方向改变时,轴将交换。根据你引用的文章:

然而,Android sensor API将传感器坐标空间定义为相对于设备的顶部和侧面,而不是短边和长边。当系统调整屏幕方向以响应侧向握住手机时,传感器坐标系不再与屏幕坐标系对齐,应用程序的显示会出现意外的旋转


要访问未交换的值(如果愿意),请在values[]中使用索引3、4和5,否则同一篇文章中提到的一些建议会非常有效

这是一个很老的问题,但我觉得它仍然相关。到今天为止,佩奇在其传感器坐标系一章中仍然说:

了解该坐标系最重要的一点是,当设备的屏幕方向改变时,轴不会互换,也就是说,传感器的坐标系不会随着设备的移动而改变。此行为与OpenGL坐标系的行为相同

对我来说,这个措辞仍然令人困惑,当然可能是因为我不是英语母语人士

我的理解是,在Android中(就像在iOS中一样),传感器假设的坐标系与设备集成在一起。也就是说,坐标系与设备固定在一起,其轴随设备一起旋转

因此,对于自然方向为纵向的手机,当手机垂直放置在用户面前时,Y轴指向上方。请参见下图,来自同一位置:

然后,当用户将手机向左横向旋转时(因此,主页按钮位于右侧),Y轴指向左侧。请参见下图,从a(尽管屏幕不再真正面向用户):

还有一篇来自Android开发者博客的经常被引用的帖子,上面说:

API用于设备自然定向的传感器坐标系不会随设备移动而改变,与OpenGL坐标系相同

在我看来,这与我之前的推理完全相反。但话说回来,在接下来的文章中,有什么问题?第二章,你们可以看到,当手机向左横向旋转时,Y轴指向左边,就像我之前的推理一样