Подтвердить что ты не робот

Есть ли способ скрыть систему/панель навигации в Android ICS

Я хотел бы расширить дискуссию о скрытии системы/панели навигации в нижней части экрана на планшетах Android Ice Cream Sandwich (4.0 и выше).

Там уже есть поток (Есть ли способ скрыть системную панель в Android 3.0? Это внутреннее устройство, и я управляю навигацией) о скрытии панели на сотовых устройствах. Тем не менее, мои клиенты будут использовать новейшие устройства для мороженого сэндвич и очень заинтересованы в том, чтобы скрыть панель внизу экрана. Их применение не для обычного использования потребителями, и для них очень важно взять на себя весь экран, чтобы обеспечить их опыт. Насколько возможно скрыть этот бар - или, по крайней мере, переопределить поведение всех кнопок - без укорачивания устройств или перезаписи его прошивки?

4b9b3361

Ответ 1

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

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

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

В качестве альтернативы вы можете сделать навигацию менее навязчивой, используя SYSTEM_UI_FLAG_LOW_PROFILE, это изменяет кнопки на маленькие точки (например, как приложение для камеры).

Ответ 2

на корневых устройствах, я использую следующую команду adb

adb shell pm disable com.android.systemui

чтобы скрыть навигационную панель навсегда. Чтобы снова показать его, запустите

adb shell pm enable com.android.systemui

пока он отлично работает для меня

Ответ 3

Использование приведенного ниже кода - один из способов сделать это, чтобы скрыть навигацию.

getWindow().getDecorView()
           .setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

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

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

//Initializew this in onCreate()
View mDecorView = getWindow().getDecorView();

//Then call this function
private void hideSystemUI() {
     mDecorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

Однако в моем случае я никогда не хотел, чтобы панель навигации и уведомлений была видна, даже если пользователь перебирает верхнюю часть экрана. Я попробовал, и я смог добиться этого частично. То, что я сделал, было реализовано CountDownTimer, которое вызывало бы hideSystemUI() каждую секунду или около того. Я знаю, что это не лучший способ сделать это. Но у меня не было другого решения.

Если кто-то получит какие-либо, то, пожалуйста, дайте мне знать о том, как надолго скрыть навигацию и панель уведомлений:) Надеюсь, этот ответ поможет кому-то в будущем:)

Смотрите это видео, чтобы лучше понять эту функцию.

Ответ 4

Обновление - есть работа, которая может быть использована для таких случаев (ручная настройка приложения для клиента). Действительно, панель навигации не может быть удалена в рамках данной структуры.

Тем не менее, существует решение скрыть панель навигации, если для вас используется опция . Вот как:

Корневое устройство

Установить и запустить Busybox

Установить HideBar

В HideBar есть возможность запускаться в режиме "Киоск", в котором нет возможности повторно отобразить панель навигации. Излишне говорить, что вам действительно нужно быть осторожным с этим.

Применяемые риски:

  • удаление устройства

  • неправильная установка BusyBox, что может немного затруднительно, хотя вряд ли это приведет к потере информации.

  • войти в тупик, где вы не можете выйти из приложения. Например, если 1 ваш графический интерфейс не предоставляет опцию закрытия, 2 ваше приложение запускается автоматически при запуске, 3 HideBar не позволяет каким-либо образом повторно отображать панель навигации, а 4 HideBar скрывает панель навигации при запуске. это можно преодолеть, просто остановив/удалив ваше приложение из adb.

Вот и другие одинаковые вопросы:

Ответ 5

Хотя это хакерское решение, я думаю, что оно заслуживает внимания, потому что не требует укоренения устройства: getWindow().getDecorView().setSystemUiVisibility(8);.

Ответ 6

Чтобы скрыть строку состояния и панель навигации в android ics, используйте

LinearLayout layout = (LinearLayout)findViewById(R.id.layout);
layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

Ответ 7

EDIT: с 4.4 (19) вы можете использовать следующее, чтобы включить то, что называется "IMMERSIVE MODE". Он был введен для Google Cardboard vrtoolkit, но может использоваться в целом.

setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE)

https://developer.android.com/training/system-ui/immersive.html

Из моих усилий кажется, что: setSystemUiVisibility (View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) не работает на планшетах.

Он работает на смартфонах (протестирован с Nexus 4 Mako), но он снова появится на событии touch/click. Это также, похоже, фиксирует фокус на панели, заставляя вас дважды щелкнуть, чтобы вернуть фокус в представление.

Я пытаюсь найти способ захватить событие, которое на самом деле перерисовывает панель. Не повезло.

Будучи упрямым, я собираюсь загрузить код android os, запустите отладчик eclipse и перейдите в huntin. Это не ошибка. Навигационная панель имеет решающее значение для жизненного цикла приложения.

Я видел приложения, которые делают это (игры и т.д.), поэтому есть способ без rooting.

Ответ 8

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

<Application
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" <!--
other parameters of application tag-->
>

а затем создайте линейную или относительную компоновку и поместите ее в свой макет действий.

Ответ 9

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

  • Предоставить привилегии администратора.
  • Установите пароль и заблокируйте устройство, используя профиль admin admin api
  • Затем загрузите пользовательские интерфейсы поверх встроенного экрана блокировки. (Конечно, это будет показывать экран блокировки фона всякий раз, когда происходит переход между действиями. Но если логика организована хорошо, тогда пользователь будет плавным и менее заметным).
  • Когда нужно включить обратно, reset password to ", используя resetPassword (" ", 0) объекта менеджера политики устройства.

Ответ 10

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

у вас все еще есть панель, но вы не можете выйти из приложения без перезагрузки планшета

Ответ 11

Скрыть панель навигации на Android 4.0 и выше можно с помощью значка SYSTEM_UI_FLAG_HIDE_NAVIGATION. Этот фрагмент скрывает как панель навигации, так и строку состояния:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions

Смотрите следующее: Скрытие панели навигации

Ответ 12

Если ваше устройство внедрено, этот код поможет вам скрыть системную панель на ICS (я тестировал ее на Samsung Galaxy Tab 2 и отлично работает):

ArrayList<String> list = new ArrayList<String>();
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
    list.add(envName + "=" + env.get(envName));
}

// Array containing the environment to start the new process in
String[] envp = (String[]) list.toArray(new String[0]);

String hidingCommand = "while [ true ]\n" + "do\n" + "killall com.android.systemui\n" + "done\n";
Runtime.getRuntime().exec(new String[] { "su", "-c", command }, envp);

myContext.sendBroadcast(new Intent("com.mycompany.myapp.ACTION_BARHIDDEN"));