Android 7.1.1 introdujo la compatibilidad a nivel del sistema con el modo de demo para punto de venta para que los clientes puedan examinar los dispositivos en acción en las tiendas minoristas. Los dispositivos se configuran para la demostración de venta minorista 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 de venta minorista. Android 8.1 revisa esta compatibilidad para crear usuarios de demostración a través de la API de DevicePolicyManager createAndManageUser. Esto permite una personalización mucho mayor del OEM al modo de venta minorista estándar en términos de administración de usuarios y administración de políticas de dispositivos en el 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 demo (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 demo de venta minorista en Android 8.1 y versiones posteriores.
Cambios en la plataforma
Establece DEVICE_DEMO_MODE
Los dispositivos que implementan un modo de demo 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 demo 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 demo para punto de venta, 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 venta minorista. 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, luego, inhabilita 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 config_demoModeLauncherComponent
del framework 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 DemoPlayer de demo 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 un bucle. Cuando el usuario toca la pantalla, el selector personalizado inhabilita su componente de actividad, lo que hace 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, el servidor del sistema 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 indicación visual para ingresar al modo de venta minorista. SUW se puede modificar para buscar algún otro indicador 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 del sistema A/B, la partición del sistema B debe contener el video de demostración en /preloads/demo. Se copia en /data/preloads/demo en el primer inicio.
Cómo personalizar las apps precargadas para el modo de demo para punto de venta
Las apps precargadas pueden personalizar su experiencia para el modo de demo para punto de venta llamando a la API de UserManager.isDemoUser()
para ver si la app se inicia en un entorno de demo.
Se establecen ciertas restricciones en el usuario de demostración, similares a las políticas de dispositivos o perfiles 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). Recomendamos que las apps de OEM también verifiquen si se configuró DISALLOW_MODIFY_ACCOUNTS
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 interacción del usuario.
App de demo para punto de venta
La implementación del modo de demostración de venta minorista basado en el propietario del dispositivo requiere que se configure una app de controlador de política de dispositivo como el propietario del dispositivo. El AOSP contiene una implementación de referencia de la app de RetailDemo en /packages/apps/RetailDemo.
Las apps del 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:
Todas las apps de propietario del dispositivo deben extender el componente DeviceAdminReceiver, que funciona como el token de autorización para todas las APIs de DevicePolicyManager. El componente debe tener el permiso
android.permission.BIND_DEVICE_ADMIN
, incluir las políticas especiales solicitadas como metadatos y filtrar los intentsandroid.app.action.PROFILE_PROVISIONING_COMPLETE
yandroid.app.action.DEVICE_ADMIN_ENABLED
.La marca DevicePolicyManager#MAKE_USER_DEMO, que se configura para crear usuarios especiales de tipo demo, es una API oculta. Esta marca tiene un valor de constante 0x4.
La propiedad del dispositivo se debe asignar solo a través del titular del rol de administración de dispositivos o la app de ManagedProvisioning.
Las APIs de la clase DevicePolicyManager permiten que el propietario del dispositivo (DO) y el propietario del perfil (PO) apliquen varias políticas de dispositivos. A continuación, se enumeran algunas de las funciones de DevicePolicyManager que se aplican 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.
Bloquea la desinstalación de paquetes.
Habilita las actualizaciones del sistema automáticas. Los dispositivos descargarán e instalarán automáticamente las actualizaciones OTA.
Inhabilita el bloqueo de teclas.
Evita que se establezcan contraseñas o huellas dactilares.
Establece un conjunto de parámetros de configuración de Settings.Global, Settings.Secure y Settings.System permitidos.
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 manera más específica: un solo permiso a una sola app. Esto no se aplica a los permisos de operaciones en apps, que los usuarios deben otorgar por usuario y por app.Establece las restricciones de usuario relevantes 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 a través de 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 diferentes videos en diferentes regiones, se pueden configurar diferentes URLs de descarga con recursos de cadenas específicas de la configuración regional en res/values-*/strings.xml. Por ejemplo, si se deben usar diferentes videos en Estados Unidos y Gran Bretaña, las URLs de descarga correspondientes se pueden colocar 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 proporciona 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 se descarga y comienza a reproducir el video. Una vez que se descarga el video, se usa para reproducirlo en todas las sesiones de demostración en el futuro. 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 una duración superior a cinco segundos. El contenido no debe generar un efecto quemado, ya que se reproducirá constantemente cuando esté en pantalla.
Consulta las definiciones de Android Developer de usuarios, perfiles y cuentas, la documentación de la API de Device Policy Manager y la app de Sample Device Owner para obtener más información.
Validación
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
Los dispositivos de demo para punto de venta pueden iniciarse en el modo de demo para punto de venta si se configuran para el modo de demo desde la fábrica. Como alternativa, los empleados de venta minorista pueden habilitar el modo minorista directamente desde el asistente de configuración.
Figura 2: Modo de demostración para tiendas
Cómo mostrar una sesión de demostración
Cuando el dispositivo entra en modo de venta minorista, cambia a un nuevo usuario de demostración y, luego, inicia automáticamente el selector de apps 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 comenzar una sesión de usuario de demostración. En ese momento, el selector personalizado inicia el selector del sistema y, luego, se cierra. Los OEMs pueden alterar el selector personalizado para iniciar, además, otro servicio o actividad al salir.
Para mantener la integridad del modo de venta minorista, se inhabilitó el protector de pantalla y también se rechazaron ciertas acciones de la Configuración rápida que podrían afectar negativamente el modo de venta minorista, incluidas las siguientes:
- Activador del modo de avión
- Quitar o modificar puntos de acceso Wi-Fi (Configuración)
- Cambiar de operador (Configuración)
- Configuración del hotspot (Configuración).
- Cambio de usuario
Además, se bloquea el acceso a algunos parámetros de configuración globales que pueden afectar al modo de venta minorista si se inhabilita lo siguiente:
- Configuración de Wi-Fi.
- Opciones de configuración de la red móvil, en especial, hotspots
- Configuración de Bluetooth.
- Copia de seguridad y restablecimiento, Fecha y hora, y Redes móviles (no aparecen en absoluto).
Si el usuario está 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 decide salir o no hay respuesta durante cinco segundos, el modo de venta minorista quita al usuario de demostración actual, cambia a uno nuevo y vuelve a reproducir el video original en bucle. Si se apaga la pantalla 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 venta minorista 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.