Вынудите действие Android всегда использовать альбомный режим

Я использую средство просмотра VNC Android на своем HTC G1. Но по некоторым причинам, то приложение всегда находится в альбомном режиме несмотря на мой G1, находится в режиме портрета. Так как средство просмотра VNC Android является открытым исходным кодом, я хотел бы, знают, как это - возможный твердый код действие, чтобы быть 'средой'. Я хотел бы изменить его для уважения телефонной ориентации.

137
задан Peter Mortensen 4 March 2016 в 19:38
поделиться

3 ответа

Глядя на ссылку AndroidManifest.xml ( ), в строке 9:

<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">

Эта строка определяет сценариента как ландшафт, но автор идет дальше в переопределении любых изменений ориентации экрана С Configchanges = «Ориентация | KeyboardHidden» . Это указывает на переопределенную функцию в vnccanvasactivity.java.

Если вы посмотрите на VNCCANVActive, на линии 109 - это переопределенная функция:

@Override
public void onConfigurationChanged(Configuration newConfig) {
  // ignore orientation/keyboard change
  super.onConfigurationChanged(newConfig);
}

Автор специально указал комментарий для игнорирования любых изменений клавиатуры или ориентации.


Если вы хотите изменить это, вы можете вернуться к файлу AndroidManifest.xml, показанному выше, и изменить строку к:

<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">

Это должно изменить программу для переключения от портрета в ландшафт, когда пользователь поворачивает устройство.

Это может работать, но может испортить, как выглядит графический интерфейс, в зависимости от того, как было создано макет. Вам придется объяснить это. Кроме того, в зависимости от того, как выполнены действия, вы можете заметить, что при изменении ориентации экрана исчезают значения, заполненные любыми вводами. Это также может быть обработано.

183
ответ дан 23 November 2019 в 23:31
поделиться

Вы можете указать ориентацию активности в манифесте. Смотри здесь .

<activity android:allowTaskReparenting=["true" | "false"]
...
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]
...
                                       "adjustResize", "adjustPan"] >  
31
ответ дан 23 November 2019 в 23:31
поделиться

Вы также можете установить те же данные в вашем коде Java.

myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

Другие значения на ActivityInfo позволит вам вернуться к датчику, управляемую или заблокированному портрету. Лично я люблю настроить его на что-то в манифесте, как предложено в другом ответе на этот вопрос, а затем изменить его позже, используя вышеуказанный вызов в Android SDK, если есть необходимость.

116
ответ дан 23 November 2019 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: