0

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

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

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

4

3 回答 3

1

加速度计给出方向。重力方向是底部)所以android将无法确定空间方向)

于 2013-01-31T15:12:04.933 回答
0

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

于 2013-01-31T15:18:32.673 回答
0

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

这是一个非常粗略的概念,但却是大意。

于 2013-01-31T15:21:18.443 回答