2016-11-29 9 views
0

У вас возникли проблемы с блокировкой устройства в режиме пейзажа/портрет?Android: Как заставить все Android-устройства работать только на пейзаже или на портрете

Я создал приложение-пусковое устройство, для которого самой действительной была назначена ориентация экрана, чтобы быть пейзажной, поскольку мое устройство было только ландшафтным устройством.

Чтобы дополнительно заблокировать экран, чтобы при выборе и запуске другого приложения на ландшафтном экране.

View orientationChanger = new LinearLayout(this); 
    WindowManager.LayoutParams orientationLayout = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 0, PixelFormat.RGBA_8888); 
    orientationLayout.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR; 

    WindowManager wm = (WindowManager) this.getSystemService(Service.WINDOW_SERVICE); 
    wm.addView(orientationChanger, orientationLayout); 
    orientationChanger.setVisibility(View.VISIBLE); 

Это делает трюк, например.

Теперь я хочу разрешить пользователю поворачивать ориентацию в случае, если какое-либо приложение требуется для работы в портретном режиме.

I tried to run these command on adb shell before doing it on my code: 

try { 
     Process stopAccelerometer = Runtime.getRuntime().exec("content insert --uri content://settings/system --bind name:s:accelerometer_rotation --bind value:i:0"); 
     Process toProtrait = Runtime.getRuntime().exec("content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:3"); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 

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

  Process toProtrait = Runtime.getRuntime().exec("content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0"); 

В коде последнее значение равно 0 в качестве ландшафта. Я думаю, что само приложение не поддерживает ландшафт, поэтому, когда я применил команду, приложение оставалось в Portrait.

Я нашел приложение онлайн, которое делает именно это. Orientation Applications

ответ

0

запрос активности в ландшафтном режиме

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

запрос активности в портретном режиме

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

положить его на OnCreate();

или просто установить его в проявленной активности

<activity 
    android:screenOrientation="portrait/landscape" 
    android:name=".ui.MainActivity" 
    android:windowSoftInputMode="stateHidden"/> 
+0

Я не могу иметь косую черту в screenOrientation. Это разрешает только один вариант. – LittleFunny

+0

yup .. его просто вариант potrait или пейзаж .. выберите один .. – ZeroOne