2014-12-23 5 views
2

Я хочу разработать приложение для видеопроигрывателя, когда устройство является ландшафтным, видео воспроизводится на весь экран, когда устройство является портретом, видео является полуэкранным воспроизведением. В ландшафте есть кнопка, когда пользователь нажимает на нее, приложение будет принудительно к портрету (В этот момент деви все еще горизонтально Что я хочу: Когда пользователь меняет устройство на вертикальное и снова переключает устройство на горизонтальное, приложение может изменить авто с портретного на альбомный.Как узнать ориентацию устройства, измененную после «setRequestedOrientation»

я называю setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); заставить портрет. После того, как я называю setRequestedOrientation(), нЕ будет звонить снова, когда я изменить устройство от горизонтального до вертикального. Таким образом, нет времени точки звоните setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR).

Я пробовал OrientationEventListener, но в onOrientationChanged() есть большая ценность, вернемся назад. Но что я хочу Ориентация устройства (пейзаж или портрет).

Есть ли какой-либо другой способ сделать то, что я хочу просто?

+0

Возможный дубликат [как определить ориентацию устройства Android?] (Http://stackoverflow.com/questions/5112118/how-to-detect-orientation-of-android -device) – aga

ответ

0

Вы можете переопределить onConfigurationChanged(Configuration config);:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     // Landscape 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     // Portrait 
    } 
} 
3

Вы должны использовать OrientationEventListener, я использую как этого, а затем использовать onConfigurationChanged как всегда:

OrientationEventListener orientationEventListener = new OrientationEventListener(getApplicationContext()) { 
      @Override 
      public void onOrientationChanged(int orientation) { 
       boolean isPortrait = isPortrait(orientation); 
       if (!isPortrait && savedOrientation == ORIENTATTION_PORTRAIT) { 
        savedOrientation = ORIENTATION_LANDSACAPE; 
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); 
       } else if (isPortrait && savedOrientation == ORIENTATION_LANDSACAPE) { 
        savedOrientation = ORIENTATTION_PORTRAIT; 
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER); 
       } 
      } 
     }; 
     orientationEventListener.enable(); 

private boolean isPortrait(int orientation) { 
     if (orientation < 45 || orientation > 315) { 
      return true; 
     } 
     return false; 
    } 

У вас есть больше информации здесь: https://developer.android.com/reference/android/view/OrientationEventListener.html

+0

Я думаю, что это лучшее решение. Это сработало для меня – Billyjoker

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