Я понимаю, что это повторяющийся вопрос, но, начиная с Android 2.3+ (Gingerbread), окончательный ответ не был опубликован и принят.
У меня есть код, который возвращает текущую ориентацию экрана как на моем телефоне Froyo, так и на планшете Honeycomb. Мои вопросы:
- Из двух ориентаций, которые я получаю в версиях до Gingerbread,
какой я должен использовать?
- Какие методы я должен использовать, чтобы установить ориентацию / вращение, чтобы зафиксировать его на месте?
Вот метод, который у меня есть сейчас (получение, но не установка)
protected void lockCurrentOrientation() {
int orientation;
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD)
{
orientation = getResources().getConfiguration().orientation;
Log.d(LogTag, "Orientation via getConfiguration " + String.valueOf(orientation));
// Not working - reporting -1 (SCREEN_ORIENTATION_UNSPECIFIED)
// orientation = getRequestedOrientation();
// Log.d(LogTag, "Orientation via getRequestedOrientation " + String.valueOf(orientation));
orientation = display.getOrientation();
Log.d(LogTag, "Orientation via WindowManager " + String.valueOf(orientation));
}
else
{
orientation = display.getRotation();
Log.d(LogTag, "Orientation via Display.getRotation " + String.valueOf(orientation));
}
}