问题
在Android服务中,我想检测屏幕旋转是否发生变化。通过旋转,我不仅是指肖像还是风景。我的意思是屏幕旋转有任何变化。此类更改的示例包括对以下内容的更改:
请注意,此问题与更改设备方向无关。它仅与屏幕方向/旋转有关。
我尝试过的
Configuration
监听ACTION_CONFIGURATION_CHANGED
的更改。这仅涵盖人像和风景之间的变化,因此180°的变化不会触发此变化。 为什么我要这样做
我正在开发一个自定义屏幕方向管理应用程序。
最佳答案
批准的答案会起作用,但是如果您想要更高的检测分辨率(或进一步支持API 3),请尝试使用OrientationEventListener
,它可以以度为单位报告手机的方向。
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
OrientationEventListener orientationEventListener = new OrientationEventListener(this,
SensorManager.SENSOR_DELAY_NORMAL) {
@Override
public void onOrientationChanged(int orientation) {
Display display = mWindowManager.getDefaultDisplay();
int rotation = display.getRotation();
if(rotation != mLastRotation){
//rotation changed
if (rotation == Surface.ROTATION_90){} // check rotations here
if (rotation == Surface.ROTATION_270){} //
}
mLastRotation = rotation;
}
};
if (orientationEventListener.canDetectOrientation()) {
orientationEventListener.enable();
}