Android kiosk mode launcher

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 4 у кого поддерживает

    Режим киоска в 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 дает возможность администратору включать и отключать режим киоска, настраивать и обновлять главное приложение, а также изменять пароль для выхода в инженерный режим.

    Инструкция по выходу из режима киоска находится в разделе «Помощь» — «Быстрый старт».

    Источник

    Оцените статью