2015-03-08 2 views
1

Мое приложение устанавливает ориентацию экрана явно в объявлении деятельности в манифесте:При каких обстоятельствах спецификация ориентации не работает

android:screenOrientation="portrait" 
android:configChanges="orientation|screenSize|keyboardHidden" 

Однако ориентация всегда пейзаж. Кроме того, нет возможности включить ориентацию в settings>display или settings>accessibility.

При каких обстоятельствах Android определит ориентацию?

Использование API 19. Я запускаю свое приложение на этом Android PC.

+0

похоже интересный ......! android: screenOrientation = "портрет" должен работать во всех случаях. – GvSharma

+0

Где вы тестируете свое приложение? – madlymad

+0

@madlymad - см. Мое редактирование. –

ответ

0

В documentation найдется таким Note

Примечания: Когда вы объявляете один из альбомных или портретных значений, это считается трудным требованием для ориентации в которой работает активность. Таким образом, значение, которое вы объявляете, позволяет фильтровать услуги , такие как Google Play, поэтому ваше приложение доступно только для устройств , которые поддерживают ориентацию, необходимую для вашей деятельности. Например, если вы объявляете «пейзаж», «reverseLandscape» или « « sensorLandscape », то ваше приложение будет доступно только для устройств, поддерживающих ландшафтную ориентацию. Тем не менее, вы также должны указать , заявив, что ваше приложение требует либо портрет, либо Ориентация ландшафта с элементом. Например, . Этот является чисто фильтрующим поведением, предоставляемым Google Play (и другими службами , которые его поддерживают), и сама платформа не контролирует , может ли ваше приложение быть установлено, когда устройство поддерживает только определенные ориентации .

Поэтому я предполагаю, что устройство, которое вы используете, имеет что-то другое в этой поддержке или вообще не поддерживает его!

Что-то еще, что вы должны иметь в виду, это то, что вы можете установить/протестировать такие приложения, чтобы бросить adb на устройства, которые Google Play не позволит установить из-за этих фильтрующих функций.


Еще один способ заставить ориентации является использование

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

перед установкой на экран каждого вида деятельности то есть. до setContentView(R.layout.activity_main);.

Даже этот код не уверен, что он будет работать на вашем устройстве.

В прошлом у меня появились сообщения о странном поведении относительно фиксации ориентации, но это было совершенно наоборот, поскольку setRequestedOrientation не работает, в то время как блокировка мысли AndroidManifest.xml работает.

1

Это, скорее всего, невозможно для вашего «Android Mini PC RK3288». Основываясь на ваших наблюдениях, что нет настроек для настройки включения/выключения автоматического поворота или настройки ориентации, и что это устройство использует соединение HDMI для вывода экрана, оно, вероятно, будет жестко запрограммировано для вывода в ландшафт. Однако вам следует обратиться к производителю и попросить их проверить это.Может быть, у них есть подробности или секреты, чтобы это сделать? Он не мог обидеться.

В то же время можно выполнить Rotating a view in Android. Это обходное решение должно работать для вас.

HTHs

+0

Поворот мой быть интригующим обходным путем. Я буду держать вас в курсе. Благодаря! –

+0

Ну, он ориентируется так, как я хочу, но так как экран (1920x1032), есть пространство сверху и снизу - много места. –

+0

попробуйте 'android: theme =" @ android: style/Theme.NoTitleBar.Fullscreen "или сделайте так, чтобы вы показывали [полный фрагмент диалога] (http://stackoverflow.com/questions/7189948/full- screen-dialogfragment-in-android/26163346) – petey