2013-04-26 27 views
0

我使用OrientationEventListener()检测方向变化,但它给连续值。我只想要四个值为每个方向即PORTRAIT,REVERSE_PORTRAIT,LANDSCAPE和REVERSE_LANDSCAPE MODE.What我应该做什么来获得值只有方向改变。我的问题是我想要检测方向,当设备快速从景观模式转换为反向景观模式。我想调用currentScreenOrientation()函数只有一次方向更改,但现在它调用它的每个值之间的0到359.传感器值为每四个类型的方向

 mOrientationEventListener = new OrientationEventListener(this, 
       SensorManager.SENSOR_DELAY_NORMAL) { 
      @Override 
      public void onOrientationChanged(int arg0) { 
       currentScreenOrientation(); 
      } 
     }; 

     if (mOrientationEventListener.canDetectOrientation()) { 
      Toast.makeText(this, "Can DetectOrientation", Toast.LENGTH_LONG) 
        .show(); 
      mOrientationEventListener.enable(); 
     } else { 
      Toast.makeText(this, "Can't DetectOrientation", Toast.LENGTH_LONG) 
        .show(); 
      finish(); 
     } 
    } 

thanx提前。

回答

1

首先保存设备的方向时,应用程序启动

mDisplay = getWindowManager().getDefaultDisplay(); 
mCurrentOrientation = mDisplay.getRotation(); // return values are 0, 90, ... 

而且在onOrientationChanged检查,如果方向已经改变

@Override 
public void onOrientationChanged(int orientation) 
{ 

     if (mDisplay.getRotation() != mCurrentOrientation) 
     { 
      mCurrentOrientation = mDisplay.getRotation(); 
      currentScreenOrientation(); 
     } 

}