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

В Android 7.1.1 реализована поддержка режима демонстрации для розничной торговли на системном уровне, позволяющая покупателям опробовать устройства в действии в розничных магазинах. Настройка устройств для демонстрации в розничной торговле осуществляется с помощью приложения владельца устройства, что гарантирует ограничение использования устройства только определёнными приложениями демонстрационного режима. Конечные пользователи не должны иметь возможности добавлять личные учётные записи на демонстрационном устройстве для розничной торговли. В Android 8.1 эта поддержка обновлена ​​и теперь позволяет создавать демонстрационных пользователей через API DevicePolicyManager createAndManageUser . Это обеспечивает гораздо более широкие возможности 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, и воспроизводит его по кругу. При касании экрана пользовательский лаунчер отключает свой компонент Activity, что приводит к запуску системного лаунчера по умолчанию.

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

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

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

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

В демо-пользователе установлены определённые ограничения, аналогичные политикам управляемых устройств или профилей, которые запрещают приложениям и пользователям выполнять определённые операции. Одним из таких ограничений является DISALLOW_MODIFY_ACCOUNTS . С этим ограничением AccountManager и Settings не позволяют добавлять учётные записи. Некоторые приложения Google реагируют на это ограничение и выводят сообщение об ошибке, а другие (например, YouTube и Photos) не запрашивают учётную запись. Мы рекомендуем 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 , которая автоматически предоставляет все разрешения времени выполнения. Разрешения также можно предоставлять более узко: одно разрешение для одного приложения. Это не относится к разрешениям app-ops, которые пользователи по-прежнему должны предоставлять отдельно для каждого пользователя и для каждого приложения.

  • Установите ограничения для пользователей, относящиеся к розничному режиму, как определено в 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 , документации API Device Policy Manager и примере приложения Device Owner .

Проверка

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

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

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

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

Retail demo mode

Рисунок 2. Режим розничной демонстрации

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

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

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

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

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

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

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

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

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

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

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