如何通过支持自然景观设备来检测景观左(正常)与景观正确(反向)?

cot*_*aws 12 android landscape rotation orientation

我想做什么:

  • 检测设备的当前布局方向(纵向,横向 - 左侧,纵向(上下颠倒),横向 - 右侧)
  • 区分两种可能的景观模式(靠左侧,靠右侧)
  • 支持将景观作为其自然状态的设备(例如,此处讨论)
  • 支持<2.2(不能使用getRotation())

为了澄清,我想知道布局目前的方向.布局的底部是哪个方向?是肖像吗?它在景观中吗?景观是左还是右?等等

我能找到的最接近的是Activity.getResources().getConfiguration().orientation,但它只返回三个可能的值.ORIENTATION_LANDSCAPE,ORIENTATION_PORTRAIT或ORIENTATION_SQUARE.它没有说哪种类型的景观.

那么,我想,如果我能得到设备的方向值(如90,180,270等)并将其与上面的配置值进行比较,我可以搞清楚.例如,如果配置值为ORIENTATION_LANDSCAPE且方向为270,我可以判断它处于反向横向模式.但是,似乎没有一种简单的方法来获取方向值.我可以实现一个OrientationEventListener,但这似乎有点过头了,因为我只需要在特定时间获取一次值,而不是经常.

有在显示类两个值但getOrientation被弃用,getRotation仅适用于2.2及以上.

现在,即使我确实得到了这个价值,仍然存在自然景观的设备问题.意味着他们的0值将是风景而不是肖像.所以我还需要一个确定的方法来判断哪个(横向左,横向右或纵向)对应于0.

关于方向和类似问题,有很多关于SO的帖子,但我没有看到任何考虑所有这些问题的帖子.有没有人想到这个?

完成所有操作后,我想要像Activity.getResources().getConfiguration().orientation这样的东西,但能够告诉它是哪种横向模式.

Aar*_*onM 2

2.2 之前不支持右横向。您需要在选项或其他内容中选择 <2.2 设备。