【发布时间】:2011-12-05 16:55:29
【问题描述】:
我正在尝试暂时锁定 Android 设备的方向,大多数情况下它会随着传感器的变化而变化。所以我要做的是弄清楚当前的方向(横向、反向横向、纵向、反向纵向)是什么,将方向更改为那个方向,然后再将其更改回原来的方向。
我知道我可以使用以下代码 int 方向 = this.getResources().getConfiguration().orientation; this.setRequestedOrientation(方向); 这样做的问题是,通常有问题的方向设置为“未定义”或“用户”或“传感器”,这对我没有帮助。如何找出屏幕的四个可能侧面中的哪一个是“向下”的?
我知道 getRotation(),如下所述:how to detect orientation of android device?
问题在于我可以从设备的“自然”方向找出实际的旋转(0、90、180、270 度)……但如果我不知道是什么,这对我没有帮助原来的方向是。
如何确定设备的转动方向,以便将设备临时固定到该方向?
更新
不,这不是重复的问题。 我怀疑在不同的设备上可能会有不同的行为,但不能确定这一点。 我做了更多的实验和研究。出于某种原因,我曾认为 getConfiguration().orientation 返回“未指定”。我错了。它确实返回横向或纵向。
但这就是问题所在。直到 Gingerbread (2.3, API 9) 才添加了 REVERSE 横向和反向纵向。
因此,例如,如果设备处于反向横向模式,getConfiguration.orientation 会告诉我它处于横向模式。然后,当我将请求的方向设置为横向时--bam,屏幕会上下翻转。
我没有意识到这在 Froyo 中更难,所以我将重新表述我之前提出的问题:
在 Froyo 中,如何检测设备是横向、反向横向、纵向还是反向纵向?
建议列出了所有工作 - 对于 Gingerbread 或更高版本。
【问题讨论】:
标签: android