Android:获取当前设备方向

9

我在清单文件中将活动方向设置为竖屏,因为我不想让屏幕旋转。

但是当我点击按钮时,我想要获取Android设备的当前方向(竖屏或横屏)?我不需要从传感器获得连续更新;只需要在点击按钮时获取当前设备方向即可。

PS:设备方向是我拿着设备的方式。不要将其与屏幕方向混淆。

这是我目前所做的:

 int PORT=1,LAND=2;

 WindowManager windowService = (WindowManager)getSystemService(Context.WINDOW_SERVICE);

 int rotation = windowService.getDefaultDisplay().getRotation();        

    if (Surface.ROTATION_0 == rotation) {
        rotation = PORT;
    } else if(Surface.ROTATION_180 == rotation) {
        rotation = PORT;
    } else if(Surface.ROTATION_90 == rotation) {
        rotation = LAND;
    } else if(Surface.ROTATION_270 == rotation) {
        rotation = LAND;
    }
 return rotation;

即使使用以下方法也无济于事。
getResources().getConfiguration().orientation

由于我的活动默认设置为纵向,因此它始终返回1。

非常感谢提供示例代码。

谢谢。


3
https://dev59.com/0HE85IYBdhLWcg3wZymt我只用了10秒钟就在谷歌上找到了。 - Bart Hofma
2
Bart:嗯,我也遇到了同样的问题。但是当屏幕方向固定时,它会失败。我想在按钮点击时获取设备方向。 - Kushal
试试这个。http://developer.android.com/reference/android/view/OrientationEventListener.html - vincentzhou
@Kushal,我也遇到了同样的问题,正在努力寻找解决方案,因为我也想知道为什么会出现这种情况。所以对于我的第一条评论表示歉意,它似乎确实无法解决你的问题。 - Bart Hofma
@Kushal 你是在设备上测试还是模拟器上测试? - Bart Hofma
显示剩余4条评论
1个回答

7
使用这个 :)
getResources().getConfiguration().orientation

1
当屏幕方向固定时,这个出现了故障。 - Kushal
如果翻译失败,请更新您的问题,包括代码和堆栈跟踪。 - Bart Hofma
1
我所说的失败是指,无论我如何拿着设备,它总是返回纵向模式的值。 - Kushal
@Kushal 可能是因为您正在获取默认方向 windowService.getDefaultDisplay().getRotation(); 您尝试过我们的建议了吗? - Bart Hofma
这个程序如何区分左横屏/右横屏?还是竖屏/倒置竖屏? - atreat
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接