Android设备如何知道什么是" up"当它启动时

时间:2013-01-31 15:04:50

标签: android orientation

如果我拿起我的设备并将其倒挂并重新启动,则开始屏幕将始终以相同的旋转方向定向。没有旋转更改事件,并且在我自己的应用程序中使用以下代码也不会产生轮换:

WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
int rotation = wm.getDefaultDisplay().getRotation();

我在Android 2.3上运行此功能。我怀疑其中一个传感器提供了关于什么是向上的方向,但找不到任何能够为您提供方向的API。实际上,您甚至不必将设备倒挂。您可以将其放下或以任何方向放置,并且开始屏幕始终正确定位。开始屏幕永远不会翻转或改变方向。

3 个答案:

答案 0 :(得分:1)

加速度计提供方向。重力方向是底部)因此android将无法确定空间方向)

答案 1 :(得分:0)

您可以放心地假设加速度计芯片以正确的方向焊接到主板上。 基本上它提供3个数字 - 用于加速应用于设备的矢量组件 (如果设备在某个地方不动,那么这个矢量是向上的,它的绝对值是地球引力)。感谢正确的焊接,矢量组件是对齐的 设备轴 - 只需检查它们的符号,以确定哪个部分比其他部分更高

答案 2 :(得分:0)

加速度计检测相对于重力的方向。如果您将手机倒挂并重新启动,则加速计会在屏幕底部返回“向上”,但该组件的制造商会事先说明这一点。因此,加速度计也检测其自身的方向。它能够检测出与重力对齐的“向上”和与自身对齐的“向上”的差异。因此,wm.getDefaultDisplay().getRotation()返回的“up”从“up”切换到“down”,因为加速度计知道它是颠倒的(基本上)。

这是一个非常粗略的概念,但这是一般的想法。