OrientationEventListener和onOrientationChanged无法正常工作

时间:2018-05-18 13:47:54

标签: android screen-orientation

我正在尝试使用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之间变化?

顺便说一句我使用android:screenOrientation="portrait"中的AndroidManifest.xml强制我的主要布局为肖像

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

1 个答案:

答案 0 :(得分:1)

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

我有一个微笑的情况。我有一个固定在纵向模式的应用程序,我使用OrientationEventListener&& onOrientationChanged来监视设备旋转。换句话说,我的设置与TJ1非常相似。

我在上面的测试中观察到的代码在某些设备上工作正常,但后来我有一个设备(Nokia6,api27),其中代码无效。根本没有调用“onOrientationChanged”-fn。

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