- Kiosk Mode приложения на Android
- Хардварные кнопки и разъёмы
- Панель с виртуальными кнопками
- Кнопки Home и Back
- Проблемы
- Различный системные диалоги
- Android Kiosk Mode: ограничения по правилам и без
- Мобильные киоски
- Режим киоска в Android
- Android 5.0: долгожданный API
- Android до 5.0: как обойти систему?
- Перезагрузка
- Кнопка BACK
- Кнопка HOME
- Кнопка POWER
- Системные диалоги
- Клавиатура
- Панель статуса
- Подпишитесь
- Режим киоска
- Что это такое?
- Управляемый мобильный киоск
- Как выйти из режима киоска?
Kiosk Mode приложения на Android
Привет Хабр. Многие из нас каждый день трудятся на определёнными приложениями, создают что-то своё или выполняют требования нерадивого заказчика. Одним из таких требований может быть что-то вроде: «Хочу что бы из приложения нельзя было выйти, не хочу чтобы можно было делать что-то ещё, кроме как находится в моём приложений». В этом топике хочу поделиться мыслями, как же такое сделать.
Первое к чему мы приходим, что узнаём о новом типе приложений — Kiosk Mode — особый тип приложений, обычно работающие на устройствах в публичных местах. В таких приложениях функционал, к которому пользователь может иметь доступ ограничен самим приложением. Доступ к системе или каким-либо настройкам недопустим. Из таких приложений нельзя выйти. И так как мы здесь говорим об Андроиде, то, к большому сожалению, их API не предоставляет никаких возможностей для создания такого типа приложений. Попытаемся же разобраться, что со всем этим мы можем сделать и как хоть немного угодить нашему заказчику.
Хардварные кнопки и разъёмы
Каждое устройство предоставляем нам определённым набор кнопок и различных различных разьёмов, таких как USB, питание и т.к. В этом случае, как разработчики, мы поделать особо ничего не можем. Придётся при размещении предусмотреть конструкцию, которая бы полностью блокировала возможность использования такие вещей.
Панель с виртуальными кнопками
Начиная с версии Андроид 3.0 нам предлагают некоторую альтернативу хардварным кнопкам, такую как панель в нижней части экрана. Сюда входят кнопки «Назад», «Домой», «Опции», статус батареи и прочее.
Но для нашего приложения данная панель может очень мешать, так как позволяет выйти из приложения, войти в настройки системы и прочее, что может нарушить необходимый ход работы. Но есть один способ исчезнуть эту панель. Всё что будет описано здесь и далее, требует root прав на вашем устройстве.
И так, нам будет необходимо выполнит простую команду:
service call activity 79 s16 com.android.systemui
Данную команду может выполнить либо через adb, либо же напрямую из приложения:
Это заставит враждебную для нас панель уйти с наших глаз. Но если вдруг эта панель будет нам нужна то вернуть её можно также просто командой:
am startservice -n com.android.systemui/.SystemUIService
Данное решение успешно работало на Андроид 3.0. Как обстоят дела с 4.0 пока сказать не могу.
Кнопки Home и Back
Если по каким-то причинам панель нужна, но нужно изменить поведение кнопок, то вот один рецепт. Начнём с простого, кнопки Back. Здесь всё легко, переопределяем метод:
Теперь сложнее, кнопка Home. Google предусмотрительно отнёсся к этой кнопке, так как это единственный способ покинуть приложение и вернуться на главный экран, но для нас это беда, как раз именно это нам и не нужно. Что мы можем сделать:
- Нам необходимо добавить в AndroidManifest необходимые настройки для нашей стартовой активити:
Это даст нам следующее, при нажатии на Home будет всплывать диалог:
Уже неплохо, но как сделать чтобы этот диалог не появлялся, а открывалось наше приложение.
mv /путь/Laucher.apk /путь2/LaucherOld.apk
Всё, на этом основное приложение на устройстве одно — наше. Больше никакого всплывающего диалогов. Если же нужно иметь доступ к Launcher’у, то либо возвращаем его назад, либо создаём секретное меню и запускаем Laucnher оттуда куда мы его перенесли.
Проблемы
К сожалению, не всё так радужно как кажется. Не все вопросы решены до конца. К примеру, посмотрим на стандартную клавиатуру:
В нижнем левом углу имеется маленькая кнопочка, которая позволяет перейти к настройкам клавиатуры, что не есть хорошо:
Решение — создать полностью свою клавиатуру, благо API это позволяет. Но решение слишком муторное, ради одной маленькой кнопочки.
Различный системные диалоги
Во время работы нашего приложения могут всплывать различные системные алерты и уведомления, наподобие низкого заряда батарей или уведомления об обновлении системы. Некоторые из них могут иметь доступ к системным настройкам.
Источник
Android Kiosk Mode: ограничения по правилам и без
Время чтения: 9 минут
Отправим вам статью на:
Киоски окружают нас повсюду. Конечно, сегодня речь не пойдет о ларьках, в которых можно купить мороженое или лимонад — мы поговорим о мобильных информационных киосках.
Обычный информационный киоск представляет собой терминал с установленным программным обеспечением, с которым пользователь может совершать ограниченный набор действий. Самые распространенные примеры: банкоматы, фотокабинки, автоматы по продаже билетов, автоматы для выдачи талончиков в очередь и другие.
Киоски могут использовать различные технологии: сенсорный экран, купюроприемник, фото и видеокамеры, принтеры и сканеры, Wi-Fi, NFC и т.д. Их общая черта — защита системы от несанкционированной активности. ПО на таких терминалах пресекает любые попытки пользователя изменить настройки системы, выполнить сброс или установить другие приложения.
Мобильные киоски
Бурное развитие мобильных технологий привело к тому, что смартфоны и планшеты также стали использовать в качестве информационных киосков. Мобильные киоски имеют ряд существенных преимуществ перед стандартными терминалами: они дешевле за счет компактных размеров и массового производства, а также обладают более широким функционалом.
Мобильные киоски используются, например, в качестве электронных меню в ресторанах, справочников для продавцов-консультантов, для демонстрации модельного ряда в магазинах одежды или автосалонах. При этом использование девайса в нерабочих целях исключено.
Чтобы устройство заработало в режиме киоска, на нем запускается программа, которая блокирует функционал ОС и не дает пользователю выйти из приложения.
Приложения-киоски могут иметь засекреченную административную панель или конфигурироваться с сервера удаленно. Также можно настроить систему отчетов: приложение будет отправлять на сервер статистику о поведении пользователя и информировать администратора о своем состоянии.
Команда Azoft занималась созданием приложений, работающих как kiosk mode для Android-устройств. В этой статье мы обсудим подводные камни разработки приложений-киосков и способы решения возникающих проблем.
Режим киоска в Android
Чтобы превратить Android-устройство в киоск, для начала необходимо заблокировать все его кнопки и разъемы. В этом случае самым банальным и при этом самым эффективным решением будет поместить девайс антивандальный ящик, что, конечно, далеко не всегда возможно. Кроме того, остаются статус бар, системные диалоги и виртуальная клавиатура, с помощью которых можно выйти в настройки. Как же обойти эти трудности?
Android 5.0: долгожданный API
Начнем с хороших новостей: в Android 5.0 появился API под названием Screen pinning. Pin в переводе с английского означает закрепить или пригвоздить. Новый API “закрепляет” экран и запрещает пользователю покидать выбранное приложение. Этот функционал можно использовать как при создании киосков для обслуживающего персонала, так и в разработке учебных приложений для проведения экзаменов и оценки знаний.
При активации режима Screen pinning пользователь не прерывается системными диалогами и уведомлениями, не имеет доступа к другим приложениям, не может выйти в главный экран и не видит статус бар.
Активировать режим можно в настройках или программными средствами:
- Разрешите Screen pinning в настройках, а затем выберите нужное приложение и закрепите его, подтвердив свой выбор.
- Для программной активации достаточно вызвать метод startLockTask() и подтвердить включение режима блокировки.
Android до 5.0: как обойти систему?
В более ранних версиях Android SDK режим киоска, к сожалению, не предусмотрен. Нет и целостного API для организации полной блокировки. Поэтому все компоненты блокируются отдельно и по-разному в разных версиях.
Кастомизация прошивки может существенно упростить реализацию kiosk mode, но мы предлагаем несколько техник, которые помогут заблокировать нежелательные элементы в версиях Android ниже 5.0, не требуя ни особой прошивки, ни root-прав.
Перезагрузка
Первое, что приходит на ум пользователю при зависании или появлении других проблем — перезагрузить устройство. Наша задача — сделать так, чтобы после перезагрузки приложение-киоск стартовало автоматически.
Это несложно: описываем ресивер в манифесте, даем разрешение на получение сообщения о перезагрузке устройства и создаем подкласс broadcast ресивера, который будет запускать наше приложение.
AndroidManifest.xml:
BootReceiver.java :
Кнопка BACK
Для кнопки Back просто переопределяем метод.
Кнопка HOME
Кнопку HOME невозможно перехватить, поэтому, чтобы предотвратить переход на главный экран при её нажатии, мы указываем приложение-киоск как Launcher. Добавляем в манифест три строчки:
AndroidManifest.xml:
Теперь при нажатии на кнопку HOME будет предлагаться выбор между двумя лаунчерами: нашим и системным. Выбираем наше приложение в качестве лаунчера по умолчанию — и готово!
Кнопка POWER
Кнопка POWER вызывает больше всего вопросов. Один из хаков, позволяющих обработать ее нажатие — задать окно приложения-киоска в качестве экрана блокировки. Однако этот способ гарантированно сработает только на версиях Android ниже 4.0.
Системные диалоги
Длинное нажатие кнопки HOME или POWER вызывает системный диалог, с помощью которого можно выйти из приложения. Кроме того существуют еще окна обновления ОС и низкого заряда батареи, которые тоже опасны для киоска, поскольку могут иметь доступ к системным настройкам.
Чтобы полностью избавиться от системных диалогов мы прописываем следующее: при потере фокуса Activity посылает Broadcast — закрыть все системные диалоги.
Клавиатура
На виртуальной клавиатуре может оказаться кнопка настроек. Если клавиатура необходима, лучшим решением будет создание кастомного варианта или интеграция одной из существующих с ограниченным функционалом.
Панель статуса
Панель статуса дает широкий спектр возможностей для выхода из приложения, поэтому от нее необходимо избавиться.
Первое, что можно сделать, — задать приложению полноэкранный режим.
До версии 4.0 можно также указать тип окна TYPE_SYSTEM_ALERT — в этом случае приложение-киоск будет показываться поверх всех системных элементов.
Еще один способ — сворачивать статус бар, как только он готов развернуться. Для этого необходимо указать разрешение в манифесте.
Начиная с Android 4.1 для сокрытия панели статуса можно использовать SDK.
Еще один популярный метод: создание прозрачного объекта View, который перехватывает все клики, на месте статус бара. Для реализации требуется флаг SYSTEM_ALERT_WINDOW.
Описанные методы — это далеко не полный перечень вариантов блокировки системных элементов в Android. Разработчики постоянно находят или изобретают что-то новое, делятся опытом, и создают приложения-киоски, обойти ограничения в которых не способен ни один, даже самый хитрый пользователь.
Поделитесь с нами своими секретами создания мобильных киосков под Android: используете ли вы способы, описанные в статье, какие достоинства и недостатки находите в них, и какие еще хаки вам известны.
- Поделиться в Facebook
- Share on Linkedin
- Запостить в Twitter
- Сохранить в Pocket
- 0 Репосты
—>
Подпишитесь
Оставьте адрес, и каждый месяц мы будем высылать свежую статью
о новых трендах в разработке програмного обеспечения.
Источник
Режим киоска
Однозадачный режим — самый популярный режим работы корпоративных Android-планшетов
Что это такое?
Киоск – это устройство на основе планшета, на котором запущено единственное приложение (Corporate Owned, Single Usage, COSU) или, в некоторых случаях, разрешен запуск нескольких определенных приложений. Пользовательский интерфейс операционной системы в киоске спрятан, и пользователь не должен иметь возможности его открыть.
Устройства, функционирующие в режиме киоска, являются частным случаем корпоративных устройств. Использование планшета в качестве киоска является, вероятно, наиболее частым способом использования мобильных устройств в корпоративном сегменте.
Управляемый мобильный киоск
Программное обеспечение киоска требует регулярного обновления, а сам киоск требует отслеживания своего статуса.
Корпоративная версия Headwind MDM предоставляет возможность использования Android-планшета в качестве управляемого мобильного киоска.
Установка через QR-код на Андроиде 7.0 или более поздней версии позволяет включить «Защищенный режим» (COSU) на устройстве. В защищенном режиме пользователь может видеть и пользоваться только кнопкой «Назад», тогда как кнопки «Домой» и «Недавние» невидимы или заблокированы. Статус-бар также закрыт и выглядит как черная полоса. Полноэкранный режим мобильного приложения (immersive mode) полностью скрывает строки навигации и статуса, и таким образом устройство действительно выглядит как киоск.
На устройствах, где установлен Android версии ниже 7, Headwind MDM эмулирует режим киоска путем блокировки статус-бара и системных кнопок, а также дополнительно запрещает несанкционированный запуск иных приложений, кроме главного приложения киоска.
Установку киоска (и запуск браузера, открывающего заданную веб-страницу) на Android-устройствах версий 4+ можно посмотреть на видео.
Как выйти из режима киоска?
Выход из режима киоска (так называемый «инженерный режим») скрыт и защищен паролем. Поэтому обычный пользователь из режима киоска выйти не сможет.
Система Headwind MDM дает возможность администратору включать и отключать режим киоска, настраивать и обновлять главное приложение, а также изменять пароль для выхода в инженерный режим.
Инструкция по выходу из режима киоска находится в разделе «Помощь» — «Быстрый старт».
Источник