Android 7.1.1 introdujo la compatibilidad a nivel del sistema con el modo de demo para punto de venta, de modo que los clientes puedan examinar los dispositivos en acción en las tiendas de venta minorista. Los dispositivos se configuran para la demo para punto de venta con una app de propietario del dispositivo para garantizar que el uso del dispositivo se restrinja solo a ciertas apps en modo de demostración. Los usuarios finales no deben poder agregar una cuenta personal en un dispositivo de demo para punto de venta. 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 cuanto a la administración de usuarios y la 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 para punto de venta en Android 8.1 y versiones posteriores.
Cambios en la plataforma
Establecer 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.
Habilitar RetailDemoModeService
En los dispositivos que implementan el modo de demo para punto de venta, el asistente de configuración establece una Global.DEVICE_DEMO_MODE
de configuración global en true
para indicar que el dispositivo entró al modo de venta. Al ver esta configuración, RetailDemoModeService crea un usuario de demostración y lo cambia cuando se inicia el usuario 0, habilita el selector personalizado especificado en un recurso de superposición e inhabilita SUW. El servidor del sistema y la interfaz de usuario del sistema también usan esta marca para administrar aspectos del modo de venta minorista.
Configurar un selector o reproductor de video personalizados
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 de dispositivo, como /data/preloads/demo/retail_demo.mp4, y lo reproduce de forma indefinida. Cuando el usuario toca la pantalla, el selector personalizado inhabilita su componente de actividad, lo que hace que se inicie el selector predeterminado del sistema.
El selector personalizado debe tener su componente personalizado marcado como inhabilitado de forma predeterminada para que no se muestre 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. 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 demo para punto de venta llamando a la API de UserManager.isDemoUser()
para ver si la app se inicia en un entorno de demo.
El usuario de demostración establece ciertas restricciones, de manera similar a las políticas de perfil o dispositivo administrado que evitan que las apps y los usuarios realicen determinadas 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 del OEM también verifiquen si DISALLOW_MODIFY_ACCOUNTS
está configurado y manejen 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 (en función de los umbrales de batería) sin interacción del usuario.
App de demo para punto de venta
La implementación del modo de demo para punto de venta basada en propietarios del dispositivo requiere que se establezca una app de Device Policy Controller como la propietaria 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 preinstalación 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 propietarios 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 demo, es una API oculta. Esta marca tiene un valor constante de 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 del dispositivo. A continuación, se enumeran algunas de las funciones de DevicePolicyManager aplicables al modo de demo para punto de venta.
Crea y administra usuarios.
Reinicia el dispositivo.
Configura los paquetes permitidos de LockTask.
Instala paquetes con PackageInstaller.
Bloquea la desinstalación de paquetes.
Habilita las actualizaciones automáticas del sistema. Los dispositivos descargarán y aplicarán actualizaciones inalámbricas automáticamente.
Inhabilitar el bloqueo del teclado
Evita la configuración de 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 específica: un permiso único a una sola app. Esto no se aplica a los permisos de operaciones de 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. La URL desde la que se descargará el video se puede configurar anulando 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 cada vez que se reinicia el 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 abarca el modo de demo para punto de venta porque es una función opcional. Las pruebas se deben realizar 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 punto de venta
Muestra la 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, sale. Los OEMs pueden alterar el selector personalizado para iniciar, además, otro servicio o actividad cuando se cierra.
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
- Eliminar o modificar puntos de acceso Wi-Fi (Configuración).
- Cambiar de operador (Configuración)
- Configurando el 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 tiempo determinado (90 segundos de forma predeterminada), el modo de venta minorista muestra un diálogo del sistema para pedirle al usuario que salga de la sesión o continúe. Si el usuario elige salir o si no hay respuesta durante cinco segundos, el modo de venta minorista quita al usuario de la demostración actual, cambia a un nuevo usuario de la demostración y vuelve a recorrer el video original. 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 cargador de arranque.