Modo de demo para punto de venta

Android 7.1.1 introdujo la compatibilidad a nivel del sistema con el modo de demostración para punto de venta, de modo que los clientes puedan examinar los dispositivos en acción en las tiendas. Los dispositivos se configuran para la demostración en la tienda con una app de propietario del dispositivo para garantizar que el uso del dispositivo se restrinja solo a ciertas apps del modo de demostración. Los usuarios finales no deben poder agregar una cuenta personal en un dispositivo de demostración para venta minorista. Android 8.1 revisa esta compatibilidad para crear usuarios de demostración a través de la API de createAndManageUser de DevicePolicyManager. Esto permite una mayor personalización por parte del OEM del modo de venta minorista estándar en términos de administración de usuarios y administración de políticas del dispositivo de demostración.

Si bien las APIs de DevicePolicyManager se pueden usar en versiones anteriores a Android 8.1, no se pueden crear usuarios de tipo de demostración (DevicePolicyManager.MAKE_USER_DEMO) con la API de createAndManageUser en las versiones 8.0 y anteriores.

Implementación en Android 8.1 y versiones posteriores

En esta sección, se destacan las mejoras de la plataforma y se describe la app de demostración para tiendas en Android 8.1 y versiones posteriores.

Cambios en la plataforma

Establece DEVICE_DEMO_MODE

Los dispositivos que implementan un modo de demostración para punto de venta basado en el propietario del dispositivo deben establecer Settings.Global.DEVICE_DEMO_MODE en 1 antes del aprovisionamiento para indicar que el dispositivo se está aprovisionando para el modo de demostración para punto de venta. SystemServer usa esta marca para administrar aspectos del modo de venta minorista, como el perfil de energía y SystemUI.

Habilita RetailDemoModeService

En los dispositivos que implementan un modo de demostración para tiendas, el asistente de configuración establece un parámetro de configuración global Global.DEVICE_DEMO_MODE en true para indicar que el dispositivo entró en el modo de tienda. Cuando ve este parámetro de configuración, RetailDemoModeService crea un usuario de demostración y cambia a él cuando se inicia el usuario 0, habilita el selector personalizado especificado en un recurso de superposición y deshabilita SUW. SystemServer y SystemUI también usan esta marca para administrar aspectos del modo de venta minorista.

Cómo configurar un selector o reproductor de video personalizado

Los fabricantes de dispositivos pueden especificar un selector personalizado anulando el recurso del framework config_demoModeLauncherComponent especificado en el archivo config.xml de la siguiente manera.

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

La app de demostración DemoPlayer para punto de venta ubicada en /packages/apps/RetailDemo es el selector personalizado predeterminado en el Proyecto de código abierto de Android (AOSP). La app busca un video en una partición del dispositivo, como /data/preloads/demo/retail_demo.mp4, y lo reproduce en bucle. Cuando el usuario toca la pantalla, el selector personalizado inhabilita su componente de actividad, lo que provoca que se inicie el selector del sistema predeterminado.

El selector personalizado debe tener su componente personalizado marcado como inhabilitado de forma predeterminada para que no aparezca en situaciones que no sean de demostración. En la situación de demostración, SystemServer habilita el config_demoModeLauncherComponent especificado cuando se inicia una nueva sesión de demostración.

El asistente de configuración también busca el video mencionado anteriormente para proporcionar una opción para ingresar al modo de venta minorista. Se puede modificar la SUW para que busque algún otro signo específico del OEM que indique que se admite el modo de venta minorista si el video no forma parte de la demostración. Si hay particiones A/B del sistema, la partición B del sistema debe contener el video de demostración en /preloads/demo. Esto se copia en /data/preloads/demo en el primer inicio.

Personaliza las apps precargadas para el modo de demo para punto de venta

Las apps precargadas pueden personalizar su experiencia para el modo de demostración en tienda llamando a la API de UserManager.isDemoUser() para ver si la app se inicia en un entorno de demostración.

En el usuario de demostración, se establecen ciertas restricciones, similares a las políticas de perfiles o dispositivos administrados que impiden que las apps y los usuarios realicen ciertas operaciones. Una de estas restricciones es DISALLOW_MODIFY_ACCOUNTS. Con esta restricción, AccountManager y Settings no permiten agregar cuentas. Algunas apps de Google reaccionan a esta restricción y muestran un mensaje de error, mientras que otras no solicitan una cuenta (como YouTube y Fotos). También recomendamos que las apps del OEM verifiquen si DISALLOW_MODIFY_ACCOUNTS está configurado y controlen la situación según corresponda.

Actualizaciones del sistema

De forma predeterminada, cuando se habilita el modo de venta minorista, la política del dispositivo se establece automáticamente en la actualización inalámbrica (OTA). Los dispositivos de venta minorista descargarán, reiniciarán e instalarán la actualización (respetando los umbrales de batería) sin la interacción del usuario.

App de demo para punto de venta

La implementación del modo de demostración para tiendas basado en el propietario del dispositivo requiere que se establezca una app de Device Policy Controller como propietario del dispositivo. El AOSP contiene una implementación de referencia de la app de RetailDemo en /packages/apps/RetailDemo.

Las apps de propietario del dispositivo no necesitan privilegios elevados ni instalación previa en la imagen del sistema, y se pueden descargar durante el proceso de configuración o aprovisionamiento. En su mayoría, se implementan como apps tradicionales, con las siguientes diferencias:

Las APIs de la clase DevicePolicyManager permiten que el propietario del dispositivo (DO) y el propietario del perfil (PO) apliquen varias políticas del dispositivo. A continuación, se enumeran algunas de las funciones de DevicePolicyManager aplicables al modo demo para punto de venta.

  • Crea y administra usuarios.

  • Reinicia el dispositivo.

  • Establece los paquetes permitidos de LockTask.

  • Instala paquetes a través de PackageInstaller.

  • Bloquear la desinstalación de paquetes

  • Habilita las actualizaciones del sistema automáticas. Los dispositivos descargarán y aplicarán automáticamente las actualizaciones OTA.

  • Inhabilita el bloqueo de teclado.

  • Evita que se configuren contraseñas o huellas dactilares.

  • Establece un conjunto de parámetros de configuración de Settings.Global, Settings.Secure y Settings.System incluidos en la lista de entidades permitidas.

  • Establece la política de permisos en PERMISSION_POLICY_AUTO_GRANT, que otorga automáticamente todos los permisos de tiempo de ejecución. Los permisos también se pueden otorgar de forma más limitada: un solo permiso para una sola app. Esto no se aplica a los permisos de app-ops, que los usuarios deben seguir otorgando por usuario y por app.

  • Establece las restricciones del usuario pertinentes para el modo de venta minorista como se define en UserManager de la siguiente manera.

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

Actualiza el video de demostración con la Web

La app de RetailDemo en /packages/apps/RetailDemo puede actualizar el video de demostración si hay conectividad de red. Para configurar la URL desde la que se descargará el video, anula el siguiente valor de cadena en la app de RetailDemo.

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

Si se deben usar videos diferentes en distintas regiones, se pueden configurar diferentes URLs de descarga con recursos de cadena específicos de la configuración regional en res/values-*/strings.xml. Por ejemplo, si se deben usar videos diferentes en Estados Unidos y Gran Bretaña, se pueden colocar las URLs de descarga correspondientes en res/values-en-rUS/strings.xml y res/values-en-rGB/strings.xml, respectivamente, como se muestra a continuación.

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

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

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

Este video se descarga como máximo una vez por cada reinicio del dispositivo. Cuando se reproduce el video en el dispositivo, la app de RetailDemo verifica en segundo plano si se proporcionó la URL de descarga y si el video en la URL es más reciente que el que se está reproduciendo.

Si es así, la app de RetailDemo descargará el video y comenzará a reproducirlo. Una vez que se descarga el video, se usa para reproducirlo en todas las sesiones de demostración futuras. Ninguna de las verificaciones se vuelve a realizar hasta después del próximo reinicio.

Lineamientos para videos de demostración

Los videos de demostración deben tener un diseño vertical o, si se trata de una tablet, la orientación natural del dispositivo, y pueden tener cualquier duración superior a cinco segundos. El contenido no debe generar efecto quemado, ya que se reproducirá constantemente cuando se muestre.

Consulta las definiciones de usuarios, perfiles y cuentas para desarrolladores de Android, la documentación de la API de Device Policy Manager y la app de ejemplo de propietario del dispositivo para obtener más información.

Validación

El CTS no cubre el modo de demostración para tiendas porque es una función opcional. Las pruebas deben realizarse de forma manual o con pruebas de unidades para la app de demostración.

Sesión de demostración

Configuración de la sesión de demostración

Es posible que los dispositivos de demostración para punto de venta se inicien en el modo de demostración si se configuraron para este modo en la fábrica. Como alternativa, los empleados de la tienda pueden habilitar el modo de venta minorista directamente desde el asistente de configuración.

Modo de demo para punto de venta

Figura 2: Modo de demostración para tiendas

Mostrar sesión de demostración

Cuando el dispositivo ingresa en el modo de venta minorista, cambia a un nuevo usuario de demostración y, automáticamente, inicia el selector personalizado especificado en el recurso de superposición, como se describe en Implementación. De forma predeterminada, este selector personalizado reproduce el video de demostración de forma repetida hasta que el usuario toca la pantalla para iniciar una sesión de usuario de demostración. En ese momento, el selector personalizado inicia el selector del sistema y, luego, se cierra. Los OEM pueden modificar el selector personalizado para iniciar, además, otro servicio o actividad al salir.

Para mantener la integridad del modo de venta minorista, se inhabilita Keyguard y también se prohíben ciertas acciones de Configuración rápida que podrían afectar negativamente el modo de venta minorista, incluidas las siguientes.

  • Interruptor del modo avión
  • Quitar o modificar puntos de acceso Wi-Fi (Configuración)
  • Cambio de operador (Configuración)
  • Configuración del hotspot (Ajustes)
  • Cambio de usuario

Además, también se bloquea el acceso a algunos parámetros de configuración globales que pueden afectar el modo de venta minorista, ya que se inhabilitan los siguientes:

  • Configuración de Wi-Fi
  • Opciones de configuración de redes móviles, en especial, zonas Wi-Fi
  • Configuración de Bluetooth
  • Copia de seguridad y restablecimiento, Fecha y hora, y Redes móviles (no aparecen en absoluto).

Si el usuario permanece inactivo durante un período (90 segundos de forma predeterminada), el modo de venta minorista muestra un diálogo del sistema para solicitarle que salga de la sesión o que continúe. Si el usuario elige salir o si no hay respuesta durante cinco segundos, el modo de venta minorista quita el usuario de demostración actual, cambia a un usuario de demostración nuevo y vuelve a reproducir el video original. Si la pantalla se apaga con el botón de encendido, se vuelve a encender automáticamente después de unos segundos.

Después de salir de una sesión de demostración, los dispositivos se silencian y restablecen algunos parámetros de configuración globales, incluidos los siguientes:

  • Brillo
  • Rotación automática
  • Linterna
  • Idioma
  • Accesibilidad

Cómo salir del modo de demo para punto de venta

Para salir del modo de venta minorista, los empleados de la tienda deben asegurarse de que el dispositivo de demostración no esté inscrito en la administración de dispositivos y restablecer la configuración de fábrica del dispositivo desde el bootloader.