我试图暂时锁定 Android 设备的方向,大多数时候它会随着传感器的变化而变化。所以我想做的是弄清楚当前的方向(横向、反向横向、纵向、反向纵向)是什么,将方向更改为该方向,然后将其改回原来的方向。
我知道我可以使用诸如
int 方向 = this.getResources().getConfiguration().orientation;
this.setRequestedOrientation(方向);
问题在于,通常将相关方向设置为“未定义”或“用户”或“传感器”,这对我没有帮助。如何找出屏幕的四个可能侧面中的哪一个是“向下”的?
我知道 getRotation(),如下所述:如何检测Android设备的方向?
问题是我可以从设备的“自然”方向找出实际旋转(0、90、180、270 度)......但如果我不知道原始方向是什么,这对我没有帮助是。
如何找出设备转向的方向,以便我可以暂时将设备固定到该方向?
UPDATE
不,这不是一个重复的问题。
我怀疑不同设备上可能有不同的行为,但不能确定。
我做了更多的实验和研究。我曾以为由于某种原因 getConfiguration().orientation 返回“未指定”。我误解了。它确实返回横向或纵向。
但问题就在这里。直到 Gingerbread(2.3,API 9)才添加了 REVERSE 横向和反向纵向。
因此,例如,如果设备处于反向横向模式,则 getConfiguration.orientation 会告诉我它处于横向模式。然后,当我将请求的方向设置为横向时,屏幕会上下翻转。
我没有意识到这在 Froyo 中更困难,所以我将重新表述我之前阐明的问题:
在Froyo中,如何检测设备是横向、反向横向、纵向还是反向纵向?
这些建议列出了所有工作——Gingerbread 或更高版本。