Kiosk mode для android

Режим киоска

Однозадачный режим — самый популярный режим работы корпоративных Android-планшетов

Что это такое?

Киоск – это устройство на основе планшета, на котором запущено единственное приложение (Corporate Owned, Single Usage, COSU) или, в некоторых случаях, разрешен запуск нескольких определенных приложений. Пользовательский интерфейс операционной системы в киоске спрятан, и пользователь не должен иметь возможности его открыть.

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

Управляемый мобильный киоск

Программное обеспечение киоска требует регулярного обновления, а сам киоск требует отслеживания своего статуса.

Корпоративная версия Headwind MDM предоставляет возможность использования Android-планшета в качестве управляемого мобильного киоска.

Установка через QR-код на Андроиде 7.0 или более поздней версии позволяет включить «Защищенный режим» (COSU) на устройстве. В защищенном режиме пользователь может видеть и пользоваться только кнопкой «Назад», тогда как кнопки «Домой» и «Недавние» невидимы или заблокированы. Статус-бар также закрыт и выглядит как черная полоса. Полноэкранный режим мобильного приложения (immersive mode) полностью скрывает строки навигации и статуса, и таким образом устройство действительно выглядит как киоск.

На устройствах, где установлен Android версии ниже 7, Headwind MDM эмулирует режим киоска путем блокировки статус-бара и системных кнопок, а также дополнительно запрещает несанкционированный запуск иных приложений, кроме главного приложения киоска.

Установку киоска (и запуск браузера, открывающего заданную веб-страницу) на Android-устройствах версий 4+ можно посмотреть на видео.

Как выйти из режима киоска?

Выход из режима киоска (так называемый «инженерный режим») скрыт и защищен паролем. Поэтому обычный пользователь из режима киоска выйти не сможет.

Система Headwind MDM дает возможность администратору включать и отключать режим киоска, настраивать и обновлять главное приложение, а также изменять пароль для выхода в инженерный режим.

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

Источник

How to turn your Android application into a kiosk

Nowadays, we find kiosk devices in more places than ever before. We use these at the train station, tourist information centers, shops, museums, hotels, post offices, and more. They usually provide an app giving useful information, the ability for communication, commerce, entertainment marketing or education. These are often equipped with a colorful touchscreen to facilitate user interaction.

Android devices can be turned into kiosks by configuring them as a COSU app (Corporate Owned Single Use application) or a Single-Use device. In this article, I will explain how to enable kiosk mode and build a simple application for this purpose.

COSU / Kiosk mode

To create a secure kiosk mode we have to disable some Android features. It is important to capture the user within one application, without a way to close it or run a different app. To achieve this we need to satisfy these requirements:

  • A single application – the user shouldn’t be able to exit our application and access any settings or private data
  • Hidden Home and Recent Apps buttons – these buttons are the most common way to navigate in Android
  • Disabled status bar – it is possible to navigate to settings or use a notification to change context
  • Running with device’s boot – device should be ready to use immediately after powering on
  • Turning off incoming calls – interaction with the application shouldn’t be interrupted
  • Blocking all paths to settings – there are many ways to access settings and we should consider them all (for example it is possible to go to language settings through the keyboard)
  • The device should be always awake – the user will not have to search for the power button,
  • The app is in fullscreen mode
Читайте также:  Последняя версия контр страйк для андроид

Starting from Android 5.0 we have the opportunity to easily create a kiosk application in Android. Let’s see how we can achieve it.

Screen Pinning

Screen Pinning is a feature which allows you to show only one application until unpinning. It can be used when giving your phone to children or other people without risk of leaking personal information. On every smartphone with system version starting from Android 5.0 Lollipop, you can enable this feature manually in Settings → Security → Screen pinning → On. You can also specify if the device should show your lock screen after unpinning.

After that, when clicking the Recent Apps button you will see a blue pin icon which allows you to pin the application to your screen. To exit the pinned screen you have to hold recent and home buttons down for a while.
With screen pinned enabled, the system behaviour has changed:

  • the status bar is blank and status icons are hidden,
  • Home and Recent apps buttons are disabled, and
  • other apps cannot launch new activities.

In our application, we can also turn this mode on programmatically with startLockTask ( ) in Activity, which will require user confirmation.

The pinned application has a visible but disabled home and recent button and it’s still possible to change context. We will need more privileges to lock the user in our kiosk and pin the screen without confirmation.

Device Admin

It is possible to make our application the administrator of the device, which will enable more possibilities to adjust system settings and manage applications. You can find your current privileged apps in Settings → Security → Device admin apps. After opening the admin details you can see the permissions each app are using. Most permissions are related with wiping device data and blocking the screen if you lose your phone.

If our application is a device admin, it can pin screen without confirmation. Home and Recent apps buttons are also hidden, so exiting from the application is not possible manually and only available from the code.

Источник

Android Kiosk Mode: ограничения по правилам и без

Время чтения: 9 минут

Отправим вам статью на:

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

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

Киоски могут использовать различные технологии: сенсорный экран, купюроприемник, фото и видеокамеры, принтеры и сканеры, Wi-Fi, NFC и т.д. Их общая черта — защита системы от несанкционированной активности. ПО на таких терминалах пресекает любые попытки пользователя изменить настройки системы, выполнить сброс или установить другие приложения.

Мобильные киоски

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

Мобильные киоски используются, например, в качестве электронных меню в ресторанах, справочников для продавцов-консультантов, для демонстрации модельного ряда в магазинах одежды или автосалонах. При этом использование девайса в нерабочих целях исключено.

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

Приложения-киоски могут иметь засекреченную административную панель или конфигурироваться с сервера удаленно. Также можно настроить систему отчетов: приложение будет отправлять на сервер статистику о поведении пользователя и информировать администратора о своем состоянии.

Команда Azoft занималась созданием приложений, работающих как kiosk mode для Android-устройств. В этой статье мы обсудим подводные камни разработки приложений-киосков и способы решения возникающих проблем.

Режим киоска в 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 sign key password

Источник

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 это позволяет. Но решение слишком муторное, ради одной маленькой кнопочки.

    Различный системные диалоги

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

    Источник

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