Простой способ скрыть системную панель на Android ICS
Я дам свои планшеты ICS для пользователей, чтобы завершить опрос, поэтому я хотел бы, чтобы пользователь работал только с моим приложением. Они не должны иметь возможность переключаться на главный экран, нажимать кнопки "назад"и т. д., поэтому я хотел бы полностью скрыть системную панель.
мой планшет укоренен, и я знаю некоторые приложения, такие как этой можете помочь мне, но мне не нужны все дополнительные функции этого приложения.
нашел в этом уроке что может помочь мне, но если я могу добавить код, чтобы сделать свой собственный, было бы здорово.
8 ответов
HideBar имеет режим киоска, особенно для этого случая использования.
скачать бесплатно доступна на http://ppareit.github.com/HideBar/. Вы также можете найти его на рынке по адресуhttps://play.google.com/store/apps/details?id=be.ppareit.hidebar.
Если вы хотите включить его в свое собственное приложение для тестирования / опроса, вы всегда можете связаться с разработчиком (см. ссылки для электронной почты). Код может быть объяснен или Intent
сделать тайник могут быть предоставлены.
после большого поиска в интернете мне удалось скрыть системную панель и появиться на устройстве 4.2 с помощью:
Скрывать:
Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui");
или используйте 79 вместо 42 для API менее 14. Вам также может потребоваться включить разрешение SET_DEBUG_APP, в этом случае вам нужно будет подписать приложение системным ключом или установить его в каталог /system/app/.
Показать:
Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService");
В качестве альтернативы некоторые люди использовали-a (вместо-n), хотя это вызывало ошибку на моем устройстве:
ошибка: не найдено; служба не запущена.
для Android 4.4 есть новая функция под названием immersive mode, которая скрывает как систему, так и строки состояния. Пользовательский интерфейс системы переключается пользователем с помощью краевого салфетки сверху или снизу экрана. Для получения более подробной информации взгляните at:
http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)
использование нового режима погружения в android kitkat
например:
getWindow().getDecorView().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_IMMERSIVE)
проверьте эту ссылку: (требует root) http://android.serverbox.ch/?p=306
аналогичный вопрос был размещен здесь же: есть ли способ скрыть системную панель в Android 3.0? Это внутреннее устройство, и я управляю навигацией
или попробуйте HideBar http://ppareit.github.com/HideBar/
на самом деле вы можете просто поместить системную панель в режим "свет", кнопки системной панели и уведомления получают серый.
View v = findViewById(R.id.view_id);
v.setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
Я хочу добавить некоторую информацию к существующему ответы, надеясь, что это будет полезно для кого-то.
получить реальный полный экран работает на мои недорогие китайские таблетки мне нужно отредактировать файл, расположенный в
system/build.prop
заменить текст
ro.property.tabletUI=true
С
#ro.property.tabletUI=true
(я комментирую строку). После этого я могу получить полный экран, используя
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
для каждого вида деятельности в минфэст.в XML
это решение Хорошо, только если вы продаете таблетки с вашим приложением и нужны права root редактировать system/build.prop
. так что это не решение для всех, поэтому, пожалуйста, не понижайте этот маленький вклад.
EDIT: Я заметил, что на моих планшетах есть аппаратные кнопки (Home, menù и back) на кадрах. Поэтому Android позволяет мне скрыть системную панель. Я пробовал с другими планшетами, которые не имеют аппаратных кнопок без успеха.
Google намеревается использовать Android только для потребителей. Они интегрировали панель пользовательского интерфейса системы более плотно в Android ICS (4.0), чтобы предотвратить укоренение устройства и убийство бара таким образом. Попытка удалить процесс system bar предотвратит полную загрузку ОС.
Если вы хотите ограничить доступ пользователей к главному экрану, то вам не повезло с Android ICS. Я бы предложил найти производство планшетов, которые будут предварительно загружать устройство Android 2.3. Либо это, либо использовать корневой Android 3.х устройств.
Если вы собираетесь использовать Android для киоска или заблокированных устройств, то вам лучше ориентироваться на ОС, которая немного более открыта.
Я нашел решение, которое в моем случае использования работает как шарм, скрывая строку меню даже на не корневом устройстве:
установка этого флага
layoutparams.flags = 0x80000000 | layoutparams.flags;
параметры макета моего окна просто делает свое дело!
вот полный фрагмент, который я использовал:
Window window = getWindow();
android.view.WindowManager.LayoutParams layoutparams = window.getAttributes();
layoutparams.flags = 0x80000000 | layoutparams.flags;
window.setAttributes(layoutparams);
в моей деятельности onCreate.
чтобы узнать это, я обратный engeneered несистемный Apk я нашел, что каким-то образом смог это сделать.
по официальная документация:
что "0x80000000" - это FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, введенный как системная константа на уровне Api 21, и это в основном указывает на то, что " это окно отвечает за рисование фона для системных баров."и поскольку я не рисую вручную какую-либо системную панель, ни одна строка меню не показанный.
Я тестировал это только на паре Moverio BT-200 под управлением Android ICS 4.0.3, потому что это устройство, над которым я сейчас работаю, а также потому, что сейчас у меня нет другого устройства с уровнями Api до 19 под моими руками, чтобы проверить его.
существует обходной путь, чтобы отключить строку меню (не скрывать) во всех большинстве планшетов без укоренения. Но это немного сложно, но работает чисто. Несколько известных приложений на рынке на данный момент используют эту стратегию для достижения этой функции отключить панель меню для своих приложений.
- Grant admin privilege (требуется однократное участие пользователя для активации).
- Установить пароль и заблокировать устройство с помощью api профиля администратора устройства программно.
- затем загрузить что когда-либо UIs поверх родного экрана блокировки. (Конечно, это покажет экран блокировки фона всякий раз, когда происходит переход между действиями. Но если логика организована хорошо, то она будет гладкой и менее заметной пользователем)
- когда нужно включить назад, сбросить пароль на "" С помощью resetPassword("", 0) объекта диспетчера политики устройства.
чтобы дополнить уже приведенные ответы, и в случае, если это полезно для кого-то, нуждающегося в подобном поведении, есть этот учебник для устройств android 4.0 и выше, он рассказывает вам, как скрыть панель навигации и строку состояния (они появятся, когда экран коснется снова):
https://developer.android.com/training/system-ui/navigation.html
Я понимаю, что это не то, что вам нужно, но может быть полезно для кого-то другого на эту проблему.