2015-09-21 8 views
2

Я делаю Android видео player.It имеет такую ​​функцию, что пользователь может смотреть видео в любом orientation.I просто использовать код следующим образом:Как заблокировать ориентацию экрана андроида

Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 1); 

Он работает, но когда я добавляю функцию, которую пользователь может заблокировать, я просто сделал это:

Settings.System.putInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, 0); 

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

ответ

2
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

ИЛИ

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Больше информации здесь: Developing Orientation-Aware Android Applications

+0

но пейзаж не только один, он имеет обратный Directi Я прав? – dieyidezui

+0

да, для портрета будет 'ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT' –

+0

Но он по-прежнему может изменять направление окна, поворачивая его на 180 °. – dieyidezui

2

Используйте следующий код Основываясь на вашем изменении условий, если другое заявление

int currentOrientation = getResources().getConfiguration().orientation; 
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
    } 
else { 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 
     } 

или

Вы можете установить кому-пейзаж или портрет в ваших activity.its никогда не изменяется при повороте экрана

<activity android:name="MyActivity" 
android:screenOrientation="landscape" 
android:configChanges="keyboardHidden|orientation|screenSize"> 
    ... 
</activity> 
+0

Ваш код работает, но не полностью, Когда я нахожусь в пейзаже. С вашим кодом он сохраняет ориентацию ландшафта. но когда я меняю свой телефон, ориентация также отменяется, но не фиксируется. – dieyidezui

+0

проверить мой ответ – sasikumar

+0

Возможно, вы не понимаете моего значения. Я должен предоставить пользователю кнопку, чтобы они могли открыть функцию вращения или нет. поэтому ответ на обновление также не очень полезен. – dieyidezui

1

В вашем AndroidManifest.xml, для каждого вида деятельности поставила

android:screenOrientation="landscape" 

Это заставляет деятельность на альбомный.

+0

Это способ сохранить ориентацию. Но я не могу этого сделать. – dieyidezui

+0

вы можете узнать здесь [ссылка] (http://eigo.co.uk/labs/lock-screen-orientation-in-android/) @dieyidezui –

+0

@RahmatAryanto это не то, что он хочет. Ему нужно приложение, чтобы оставаться в ландшафте, даже если ориентация заблокирована! – dmSherazi

0

только у вас есть ot добавить в свой файл manifest.xml следующее свойство.

android:screenOrientation="portrait" 

как этот путь,

<activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" > 
     </activity> 

That.sit

+0

Извините, я не хочу, чтобы t фиксировал ориентацию все время. – dieyidezui

+0

то что вы хотите? –

+0

Я могу открыть функцию вращения или нет. когда они закрывают вращение, и ориентация экрана не изменится. – dieyidezui

0

Вы можете запросить ScreenOrinentation public void setRequestedOrientation (int requestedOrientation). Вы можете использовать его как этот

// For landscape 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
//OR for portrait 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
//OR reverse landscape 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); 
//OR for reverse portrait 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); 

requestedOrientation ориентацию постоянная, используемые в ActivityInfo.screenOrientation.

Добавлено в уровне API 1 Предпочтительная ориентация экрана эта активность хотели бы работать в. Из атрибута screenOrientation, один из SCREEN_ORIENTATION_UNSPECIFIED, SCREEN_ORIENTATION_LANDSCAPE, SCREEN_ORIENTATION_PORTRAIT, SCREEN_ORIENTATION_USER, SCREEN_ORIENTATION_BEHIND, SCREEN_ORIENTATION_SENSOR, SCREEN_ORIENTATION_NOSENSOR, SCREEN_ORIENTATION_SENSOR_LANDSCAPE, SCREEN_ORIENTATION_SENSOR_PORTRAIT, SCREEN_ORIENTATION_REVERSE_LANDSCAPE, SCREEN_ORIENTATION_REVERSE_PORTRAIT , SCREEN_ORIENTATION_FULL_SENSOR, SCREEN_ORIENTATION_USER_LANDSCAPE, SCREEN_ORIENTATION_USER_PORTRAIT, SCREEN_ORIENTATION_FULL_USER, SCREEN_ORIENTATION_LOCKED,