【问题标题】:OrientationEventListener and onOrientationChanged not working correctlyOrientationEventListener 和 onOrientationChanged 无法正常工作
【发布时间】:2018-05-18 13:47:53
【问题描述】:

我正在尝试使用OrientationEventListener 检测手机是否发生方向变化,但代码未按预期工作。以下是我与此问题相关的部分代码:

public class MainActivity extends Activity {
   OrientationEventListener myOrientationEventListener;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      ...
      myOrientationEventListener
        = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL){
          @Override
          public void onOrientationChanged(int arg0) {
             DO SOMETHING;
          }
      };
      if (myOrientationEventListener.canDetectOrientation()) {
         myOrientationEventListener.enable();
      }

如果我在调试模式下在DO SOMETHING 行设置一个断点,并且不移动手机查看arg0 的值,我会看到它变为 8,然后是 9,然后是 8,以此类推。每次我进入onOrientationChanged函数。

我的问题是:为什么手机放在桌子上不动,却进入了onOrientationChanged函数?。第二个问题是为什么arg0的值在8和9之间变化?

顺便说一下,我已经在AndroidManifest.xml 中使用android:screenOrientation="portrait" 强制我的主要布局为纵向

代码中是否有我遗漏或不正确的内容? 提前感谢您对此提供的任何帮助。

【问题讨论】:

  • 你为什么不使用 onConfigurationChanged ?
  • 你可以这样尝试:stackoverflow.com/questions/9566633/…
  • @JaiminModi 即使我已将布局强制为portrait,这是否可行?
  • @JaiminModi 你的意思是我用了onConfigurationChanged 而不是onOrientationChanged
  • 兄弟,我的意思是,如果您要检查应用是横向还是纵向,请使用 onConfigurationChanged()。

标签: android screen-orientation


【解决方案1】:

这不是答案,但我没有足够的声誉将其添加为评论:

我有一个类似的情况。我有一个固定为纵向模式的应用程序,我正在使用 OrientationEventListener&&onOrientationChanged 来监控设备旋转。换句话说,我的设置与 TJ1 完全相同。

我通过测试观察到,上面的代码在某些设备上运行良好,但是我有一个设备(诺基亚 6、api27),其中代码无法运行。根本不调用“onOrientationChanged”-fn。

(有点离题,然后我问了一个与此主题相关的问题: OrientationEventListener vs Rotation Vector Sensor to get “orientation” )

【讨论】:

  • 你是说这可能取决于设备吗?
  • 我的集合太小了,无法得出任何明确的结论。就我而言,我碰巧有四种不同的设备(全部>api22),以上是我的观察。在这里,我会对记录在案的行为感到好奇。那么,如果我有一个在应用清单中固定为纵向模式的应用,那么 OrientationEventListener 会起作用吗?
猜你喜欢
  • 2013-06-15
  • 2016-12-01
  • 2017-02-17
  • 2021-08-02
  • 2013-08-01
  • 2011-10-10
  • 2017-05-16
  • 2016-11-26
  • 2014-08-19
相关资源
最近更新 更多