1

я попробовал это, не работает, я всегда получал 0 градусовКак получить ориентацию Android устройства при запуске приложения

Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
int screenOrientation = display.getRotation(); 

Если использование SensorManager, он также не будет работать, потому что он не будет срабатывать, если я не перемещайте телефон

mOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) { 

    @Override 
    public void onOrientationChanged(int orientation) { 
    } 
}; 

Update

Пожалуйста, попробуйте полную демо

https://github.com/sochap/getorientationquestdemo

Поскольку дисплей не меняется, используйте дисплей, чтобы определить, что невозможно

Я собираюсь получить ориентацию устройства, а не ориентации дисплея

OrientationEventListener будет работать, но не в onCreate

+0

проверки ориентации экрана написать этот код в OnCreate «, если (GetResources(). GetConfiguration(). Ориентация == Configuration.ORIENTATION_LANDSCAPE) { режим // Пейзаж } ", и если вы хотите проверить, то вы также можете проверить в портретном режиме – Hanuman

+0

Возможный дубликат [Как получить текущую ориентацию экрана?] (http://stackoverflow.com/questions/3663665/how-can-i- get-the-current-screen-orientation) – earthw0rmjim

+0

Вы можете проверить, изменилась ли ориентация экрана, переопределив onOrientationChaged в действии – Hanuman

ответ

0

Попробуйте

int currentOrientation = getResources().getConfiguration().orientation; 

if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) { 
    //do something 
} else { 
    //do something 
} 
1

Это может сработать для вас. попробуй это.

Configuration config = getResources().getConfiguration(); 

    if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { 

        // set Values for landscape 

} else if (config.orientation == Configuration.ORIENTATION_PORTRAIT) { 

        // set Values for portrait 
    } 
-1

Использовать метод Activity onConfigurationChanged. Смотрите следующий код:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
super.onConfigurationChanged(newConfig); 
    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
    Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
    Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 

Вы также должны отредактировать соответствующий элемент в вашем файле манифеста включить андроида: configChanges Просто увидеть код ниже:

<activity android:name=".MyActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:label="@string/app_name"> 

ПРИМЕЧАНИЕ: с Android 3.2 (Уровень API 13) или выше, «размер экрана» также изменяется, когда устройство переключается между портретной и альбомной ориентацией. Таким образом, если вы хотите предотвратить перезапуск во время изменения ориентации при разработке для уровня API 13 или выше, вы должны декалировать android: configChanges = "orientation | screenSize" для уровня API 13 или выше.

Надеется, что это поможет вам .. :)

+0

Этот метод никогда не будет вызван, потому что я установил 'android: screenOrientation =" portrait "' для активности, я также отключил ротацию в Android –

+0

попробуйте это: int rotation = getWindowManager(). getDefaultDisplay() .getRotation(); –

+0

внутренняя ориентация; Текст CharSequence; переключатель (вращение) { кейс Surface.ROTATION_0: текст = "SCREEN_ORIENTATION_PORTRAIT"; break; case Surface.ROTATION_90: текст = "SCREEN_ORIENTATION_LANDSCAPE"; break; case Surface.ROTATION_180: текст = "SCREEN_ORIENTATION_REVERSE_PORTRAIT"; break; case Surface.ROTATION_270: текст = "SCREEN_ORIENTATION_REVERSE_LANDSCAPE"; break; default: текст = "SCREEN_ORIENTATION_PORTRAIT"; break; } –

 Смежные вопросы

  • Нет связанных вопросов^_^