Сначала вам нужен экземпляр Display
:
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
Тогда ориентация может быть названа так:
int orientation = display.getOrientation();
Проверьте ориентацию как свой путь и используйте ее для изменить ориентацию :
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Надеюсь, это поможет.
Обновление :
Хорошо, допустим, у вас есть oAllow
var, равное Boolean
, и значение по умолчанию False
.
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int orientation = display.getOrientation();
switch(orientation) {
case Configuration.ORIENTATION_PORTRAIT:
if(!oAllow) {
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
break;
case Configuration.ORIENTATION_LANDSCAPE:
if(!oAllow) {
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
break;
}
}
Вы можете добавить больше вариантов.
Я не пробовал этот пример, но, по крайней мере, скажу вам некоторыеподсказки о том, как решить.Сообщите мне, если вы получили какую-либо ошибку.
ОБНОВЛЕНИЕ
getOrientation()
уже устарело см. Здесь .Вместо этого используйте getRotation()
.Чтобы проверить, находится ли устройство в ландшафтном режиме, вы можете сделать что-то вроде этого:
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay();
int orientation = display.getRotation();
if (orientation == Surface.ROTATION_90
|| orientation == Surface.ROTATION_270) {
// TODO: add logic for landscape mode here
}