Розничный демонстрационный режим

В Android 7.1.1 появилась поддержка демонстрационного режима для розничной торговли на системном уровне, чтобы покупатели могли изучить устройства в действии в розничных магазинах. Устройства настраиваются для розничной демонстрации с помощью приложения владельца устройства, чтобы гарантировать, что использование устройства ограничено только определенными приложениями в демонстрационном режиме. Конечные пользователи не должны иметь возможности добавлять личную учетную запись на демо-устройство, предназначенное для розничной продажи. Android 8.1 пересматривает эту поддержку для создания демонстрационных пользователей с помощью DevicePolicyManager createAndManageUser API. Это позволяет гораздо лучше настроить OEM для стандартного розничного режима с точки зрения управления пользователями и управления политикой устройства на демонстрационном устройстве.

Хотя API-интерфейсы DevicePolicyManager можно использовать в версиях до Android 8.1, пользователей демонстрационного типа ( DevicePolicyManager.MAKE_USER_DEMO ) нельзя создать с помощью API createAndManageUser в версиях 8.0 и более ранних.

Реализация в Android 8.1 и более поздних версиях

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

Изменения платформы

Установить DEVICE_DEMO_MODE

Устройства, реализующие розничный демонстрационный режим на основе владельца устройства, должны установить для Settings.Global.DEVICE_DEMO_MODE значение 1 перед подготовкой, чтобы указать, что устройство подготавливается для розничного демонстрационного режима. SystemServer использует этот флаг для управления аспектами розничного режима, такими как профиль мощности и SystemUI.

Включить RetailDemoModeService

В устройствах, поддерживающих розничный демонстрационный режим, мастер установки устанавливает для глобальной настройки Global.DEVICE_DEMO_MODE значение true , чтобы указать, что устройство перешло в розничный режим. Увидев этот параметр, RetailDemoModeService создает демонстрационного пользователя и переключается на него при запуске пользователя 0, включает пользовательскую программу запуска, указанную в ресурсе наложения, и отключает SUW. System Server и SystemUI также используют этот флаг для управления аспектами розничного режима.

Установите пользовательский лаунчер или видеоплеер

Производители устройств могут указать пользовательскую программу запуска, переопределив ресурс config_demoModeLauncherComponent указанный в файле config.xml , следующим образом.

<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>

Демонстрационное приложение DemoPlayer для розничной торговли, расположенное по адресу /packages/apps/RetailDemo , является пользовательским средством запуска по умолчанию в Android Open Source Project (AOSP). Приложение ищет видео в разделе устройства, таком как /data/preloads/demo/retail_demo.mp4, и воспроизводит его в цикле. Когда пользователь прикасается к экрану, настраиваемый модуль запуска отключает свой компонент активности, что приводит к запуску системного модуля запуска по умолчанию.

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

Мастер установки также ищет ранее упомянутое видео, чтобы обеспечить возможность входа в розничный режим. SUW можно изменить, чтобы он искал какой-либо другой признак OEM, свидетельствующий о том, что розничный режим поддерживается, если видео не является частью демонстрации. Если есть системные разделы A/B, системный раздел B должен содержать демо-видео в /preloads/demo. Это копируется в /data/preloads/demo при первой загрузке.

Настройте предварительно загруженные приложения для розничного демонстрационного режима

Предварительно загруженные приложения могут настроить свою работу для розничного демонстрационного режима, вызвав API UserManager.isDemoUser() , чтобы узнать, запущено ли приложение в демонстрационной среде.

Для демонстрационного пользователя устанавливаются определенные ограничения, аналогичные политикам управляемых устройств или профилей, которые запрещают приложениям и пользователям выполнять определенные операции. Одним из таких ограничений является DISALLOW_MODIFY_ACCOUNTS . С этим ограничением AccountManager и настройки не позволяют добавлять учетные записи. Некоторые приложения Google реагируют на это ограничение и показывают сообщение об ошибке, а другие не запрашивают учетную запись (например, YouTube и Фото). Мы рекомендуем, чтобы OEM-приложения также проверяли, установлен ли DISALLOW_MODIFY_ACCOUNTS , и соответствующим образом обрабатывали сценарий.

Обновления системы

По умолчанию, когда включен розничный режим, политика устройства настроена на автоматическое обновление по беспроводной сети (OTA). Розничные устройства загрузят, перезагрузят и установят обновление (с учетом пороговых значений заряда батареи) без вмешательства пользователя.

Розничное демо-приложение

Для реализации розничного демонстрационного режима на основе владельца устройства требуется, чтобы приложение Device Policy Controller было установлено в качестве владельца устройства. AOSP содержит эталонную реализацию приложения RetailDemo в /packages/apps/RetailDemo .

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

  • Все приложения владельцев устройств должны расширять компонент DeviceAdminReceiver , который служит маркером авторизации для всех API-интерфейсов DevicePolicyManager . Компонент должен содержать разрешение android.permission.BIND_DEVICE_ADMIN , включать запрошенные специальные политики в качестве метаданных и фильтровать намерения android.app.action.PROFILE_PROVISIONING_COMPLETE и android.app.action.DEVICE_ADMIN_ENABLED .

  • Флаг DevicePolicyManager#MAKE_USER_DEMO , который установлен для создания специальных пользователей демонстрационного типа, является скрытым API. Этот флаг имеет постоянное значение 0x4.

  • Владение устройством должно назначаться только через владельца роли управления устройством или приложение ManagedProvisioning .

API-интерфейсы в классе DevicePolicyManager позволяют владельцам устройств (DO) и владельцам профилей (PO) применять различные политики устройств. Некоторые из функций DevicePolicyManager , применимых для розничного демонстрационного режима, перечислены ниже.

  • Создание и управление пользователями.

  • Перезагрузите устройство.

  • Установите разрешенные пакеты LockTask.

  • Устанавливайте пакеты через PackageInstaller .

  • Запретить удаление пакетов.

  • Включите автоматическое обновление системы. Устройства будут автоматически загружать и применять обновления OTA.

  • Отключите блокировку клавиатуры.

  • Запретить установку паролей или отпечатков пальцев.

  • Установите разрешенный набор настроек Settings.Global , Settings.Secure и Settings.System .

  • Установите политику разрешений на PERMISSION_POLICY_AUTO_GRANT , которая автоматически предоставляет все разрешения во время выполнения. Разрешения также могут быть предоставлены более узко: одно разрешение для одного приложения. Это не относится к разрешениям для операций приложений, которые пользователи по-прежнему должны предоставлять для каждого пользователя и каждого приложения.

  • Установите пользовательские ограничения, относящиеся к розничному режиму, как определено в UserManager , следующим образом.

    • DISALLOW_MODIFY_ACCOUNTS
    • DISALLOW_USB_FILE_TRANSFER
    • DISALLOW_DEBUGGING_FEATURES
    • DISALLOW_CONFIG_WIFI
    • DISALLOW_CONFIG_BLUETOOTH
    • DISALLOW_INSTALL_UNKNOWN_SOURCES
    • DISALLOW_CONFIG_MOBILE_NETWORKS

Обновление демо-видео через Интернет

Приложение RetailDemo в папке /packages/apps/RetailDemo может обновлять демо-видео при наличии подключения к сети. URL-адрес для загрузки видео можно настроить, переопределив следующее строковое значение в приложении RetailDemo.

<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>

Если в разных регионах необходимо использовать разные видео, можно настроить разные URL-адреса загрузки с помощью строковых ресурсов, зависящих от локали, в res/values-*/strings.xml . Например, если в США и Великобритании необходимо использовать разные видео, соответствующие URL-адреса загрузки можно разместить в файлах res/values-en-rUS/strings.xml и res/values-en-rGB/strings.xml. , соответственно, представлены следующим образом.

  • В res/values-en-rUS/strings.xml:

    <string name="retail_demo_video_download_url">download URL for US video goes here</string>
    
  • В res/values-en-rGB/strings.xml:

    <string name="retail_demo_video_download_url">download URL for UK video goes here</string>
    

Это видео загружается максимум один раз при каждой перезагрузке устройства. Когда видео на устройстве воспроизводится, приложение RetailDemo проверяет в фоновом режиме, предоставлен ли URL-адрес загрузки и видео по URL-адресу новее, чем воспроизводимое.

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

Руководство по демо-видео

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

Дополнительную информацию см. в определениях пользователей, профилей и учетных записей Android Developer , документации API Device Policy Manager и примере приложения владельца устройства .

Проверка

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

Демонстрационная сессия

Настройка демо-сессии

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

Retail demo mode

Рис. 2. Демонстрационный режим розничной торговли

Показать демо-сессию

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

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

  • Переключатель режима полета.
  • Удаление или изменение точек доступа Wi-Fi (Настройки).
  • Смена оператора (Настройки).
  • Настройка точки доступа (Настройки).
  • Переключение пользователей.

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

  • настройки Wi-Fi.
  • Варианты конфигурации сотовой сети, особенно точки доступа.
  • Конфигурация Bluetooth.
  • «Резервное копирование и сброс», «Дата и время» и «Мобильные сети» (они вообще не отображаются).

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

После выхода из демонстрационного сеанса устройства отключают звук и сбрасывают некоторые глобальные настройки, в том числе следующие:

  • Яркость
  • Автоматический поворот
  • Фонарик
  • Язык
  • Доступность

Выйти из демо-режима розничной торговли

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