2

Я делаю приложение, которое должно оставаться в ориентации, в которой он запущен. Я знаю, как сделать это всегда быть на портрете или всегда в ландшафте, но мне нужно, чтобы он мог начать с портрета или начинать в ландшафте и оставаться в той же ориентации, пока не будет уничтожен.Принудительное приложение для Android в ориентации, начатое для уровня api <18

В настоящее время я использую

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED); 

в моем onCreate() метод, но он требует API level 18 или выше, и мне нужно мое приложение, чтобы работать на уровне API 15 или выше. Вы можете что-то предложить?

+0

Когда ваше приложение запускается, используйте 'getRequestedOrientation()' для получения начальной ориентации. сохранить его в одноэлементном классе и в каждом действии, получить доступ к этому одиночному классу, чтобы получить ориентацию и использовать 'setRequestedOrientation()' для установки начальной ориентации во всех действиях. –

ответ

1

Вот пример фрагмента кода вы можете использовать, чтобы получить текущую конфигурацию экрана и зафиксировать его на всех устройствах Android

сначала проверяет, если экран в портретном режиме, если да, то его устанавливает портретный режим в противном случае пейзаж

if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){ 
     this.setRequestedOrientation(
       ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    } else{ 

     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    } 
+0

Благодарим за быстрый ответ! В конце концов я использовал вашу идею, но проверил 'getWindowManager(). GetDefaultDisplay(). GetRotation()', потому что я не мог найти, как проверить ориентацию ландшафта или наоборот. –

+0

well 'getWindowManager(). GetDefaultDisplay(). GetRotation()' возвращает поворот со ссылкой на «естественную» ориентацию дисплея, то есть для планшета он будет возвращать 'Surface.ROTATION_0' в альбомном режиме, тогда как для мобильного телефона это вернет то же значение для портрета. – Max

+0

Поэтому мне нужно обрабатывать случаи, когда вращение равно 180 и 270, потому что это будет означать, что используется обратная ориентация. У меня нет устройства для тестирования, у которого есть пейзаж при повороте 0, но я думаю, что я могу просто проверить эти два вращения, если 'getResources(). GetConfiguration(). Ориентация' возвращает портрет или альбомную ориентацию и устанавливает его на обратный портрет или пейзаж. –