Java 如何在横向模式下检测方向

Java 如何在横向模式下检测方向,java,android,screen-orientation,Java,Android,Screen Orientation,我的程序在横向模式API7下运行,所以我在mainfest和我的 节目 android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" 及 虽然在横向模式下,它也需要知道用户是在横向或纵向举行 从这里,我找到了一些关于定向的帖子。我试过了 OnConfiguration已更改并显示.getOrientation 不幸的是,OnConfiguratio

我的程序在横向模式API7下运行,所以我在mainfest和我的

节目

        android:screenOrientation="landscape"
        android:configChanges="orientation|keyboardHidden"

虽然在横向模式下,它也需要知道用户是在横向或纵向举行

从这里,我找到了一些关于定向的帖子。我试过了

OnConfiguration已更改并显示.getOrientation

不幸的是,OnConfiguration Changed不起作用。而我们只需要返回风景


如何在没有SensorManager的情况下正确获取方向信息

要在运行时确定设备的当前方向,可以使用WindowManager类。下面的代码片段演示了这一点:

WindowManager wm = getWindowManager();
Display d = wm.getDefaultDisplay();

if (d.getWidth() > d.getHeight()) {
// landscape mode
}
else {
// portrait mode
}

要在运行时确定设备的当前方向,可以使用WindowManager类。下面的代码片段演示了这一点:

WindowManager wm = getWindowManager();
Display d = wm.getDefaultDisplay();

if (d.getWidth() > d.getHeight()) {
// landscape mode
}
else {
// portrait mode
}

我曾经尝试过这个解决方案,但它只能返回横向模式,尝试从清单文件中删除有关屏幕方向和配置更改的条目,然后使用WindowManager。一旦你放置了它们,你就会强迫设备停留在一种模式下。因此,你总是会得到与Marcin的remove from manifest相同的结果,你也应该从代码中删除setRequestedOrientation。正如Marcin所说,使用清单和代码时,您总是处于横向模式。在设备上测试时,即使您将手机保持纵向位置,横向布局也应始终存在。即使我从清单中删除了屏幕方向和配置更改,它也无法正确返回。我认为问题来自于setRequestedOrientation。如果使用这个命令,它会锁定方向并影响反馈。霍华德,你说得对。那么在这种情况下,它必须使用SensorManager吗?因为如果我删除了setRequestedOrientation,则所有布局都不正确。我已经尝试过此解决方案,但它只能返回横向模式。请尝试从清单文件中删除有关屏幕方向和配置更改的条目,然后使用WindowManager。一旦你放置了它们,你就会强迫设备停留在一种模式下。因此,你总是会得到与Marcin的remove from manifest相同的结果,你也应该从代码中删除setRequestedOrientation。正如Marcin所说,使用清单和代码时,您总是处于横向模式。在设备上测试时,即使您将手机保持纵向位置,横向布局也应始终存在。即使我从清单中删除了屏幕方向和配置更改,它也无法正确返回。我认为问题来自于setRequestedOrientation。如果使用这个命令,它会锁定方向并影响反馈。霍华德,你说得对。那么在这种情况下,它必须使用SensorManager吗?因为如果我删除了setRequestedOrientation,所有布局都不正确。