我正在使用OrientationEventListener()来检测方向变化但是它给出了连续的值。我只想要每个方向的四个值,即PORTRAIT,REVERSE_PORTRAIT,LANDSCAPE和REVERSE_LANDSCAPE MODE。我应该怎样做才能在方向改变时获取值。我应该问题是我想在设备快速从LANDSCAPE MODE转到REVERSE LANDSCAPE MODE时检测方向。我想只在方向改变时调用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();
}
}
提前完成。
答案 0 :(得分: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();
}
}