Android 7.1.1 introdujo soporte a nivel de sistema para el modo de demostración minorista para que los clientes puedan examinar los dispositivos en acción en las tiendas minoristas. Los dispositivos se configuran para demostración minorista mediante una aplicación del propietario del dispositivo para garantizar que el uso del dispositivo esté restringido únicamente a ciertas aplicaciones del modo de demostración. Los usuarios finales no deben poder agregar una cuenta personal en un dispositivo de demostración minorista. Android 8.1 revisa esta compatibilidad para crear usuarios de demostración a través de la API createAndManageUser de DevicePolicyManager. Esto permite una personalización mucho mayor del OEM al modo 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 API de DevicePolicyManager se pueden usar en versiones anteriores a Android 8.1, los usuarios de tipo demostración ( DevicePolicyManager.MAKE_USER_DEMO
) no se pueden crear con la API createAndManageUser en las versiones 8.0 y anteriores.
Implementación en Android 8.1 y posteriores
Esta sección destaca las mejoras de la plataforma y describe la aplicación de demostración minorista en Android 8.1 y versiones posteriores.
Cambios de plataforma
Establecer DEVICE_DEMO_MODE
Los dispositivos que implementan un modo de demostración minorista basado en el propietario del dispositivo deben configurar Settings.Global.DEVICE_DEMO_MODE
en 1 antes del aprovisionamiento para indicar que el dispositivo se está aprovisionando para el modo de demostración minorista. SystemServer utiliza este indicador para gestionar aspectos del modo minorista, como el perfil de energía y SystemUI.
Habilitar RetailDemoModeService
En los dispositivos que implementan un modo de demostración minorista, el asistente de configuración establece una configuración global Global.DEVICE_DEMO_MODE
en true
para indicar que el dispositivo ha ingresado al modo minorista. Al ver esta configuración, RetailDemoModeService crea un usuario de demostración y cambia a él cuando se inicia el usuario 0, habilita el iniciador personalizado especificado en un recurso superpuesto y deshabilita SUW. System Server y SystemUI también utilizan este indicador para gestionar aspectos del modo minorista.
Configurar un iniciador personalizado o un reproductor de vídeo
Los fabricantes de dispositivos pueden especificar un iniciador personalizado anulando el recurso de marco 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 aplicación DemoPlayer de demostración minorista ubicada en /packages/apps/RetailDemo es el iniciador personalizado predeterminado en el Proyecto de código abierto de Android (AOSP). La aplicación busca un vídeo 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 iniciador personalizado desactiva su componente de actividad, lo que hace que se inicie el iniciador predeterminado del sistema.
El iniciador personalizado debe tener su componente personalizado marcado como deshabilitado de forma predeterminada para que no aparezca en escenarios que no sean de demostración. En el escenario de demostración, System Server habilita el config_demoModeLauncherComponent
especificado al iniciar una nueva sesión de demostración.
El asistente de configuración también busca el video mencionado anteriormente para brindarle la oportunidad de ingresar al modo minorista. SUW se puede modificar para buscar alguna otra señal específica de OEM de que el modo minorista es compatible 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 vídeo de demostración en /preloads/demo. Esto se copia en /data/preloads/demo en el primer arranque.
Personalice aplicaciones precargadas para el modo de demostración minorista
Las aplicaciones precargadas pueden personalizar su experiencia para el modo de demostración minorista llamando a la API UserManager.isDemoUser()
para ver si la aplicación se inicia en un entorno de demostración.
Ciertas restricciones se establecen en el usuario de demostración, similares a las políticas de perfil o dispositivo administrado que impiden que las aplicaciones y los usuarios realicen ciertas operaciones. Una de estas restricciones es DISALLOW_MODIFY_ACCOUNTS
. Con esta restricción, el Administrador de cuentas y la Configuración no permiten agregar cuentas. Algunas aplicaciones de Google reaccionan a esta restricción y muestran un mensaje de error, y otras no solicitan una cuenta (como YouTube y Fotos). Recomendamos que las aplicaciones OEM también verifiquen si DISALLOW_MODIFY_ACCOUNTS
está configurado y manejen el escenario en consecuencia.
Actualizaciones del sistema
De forma predeterminada, cuando el modo minorista está habilitado, la política del dispositivo está configurada para que se actualice automáticamente de forma inalámbrica (OTA). Los dispositivos minoristas descargarán, reiniciarán e instalarán la actualización (respetando los umbrales de batería) sin interacción del usuario.
Aplicación de demostración minorista
La implementación del modo de demostración minorista basado en el propietario del dispositivo requiere que se configure una aplicación Device Policy Controller como propietario del dispositivo. El AOSP contiene una implementación de referencia de la aplicación RetailDemo en /packages/apps/RetailDemo .
Las aplicaciones del 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 aplicaciones tradicionales, con las siguientes diferencias:
Todas las aplicaciones de propietarios de dispositivos deben ampliar el componente DeviceAdminReceiver , que sirve como token de autorización para todas las API de DevicePolicyManager . El componente debe tener el permiso
android.permission.BIND_DEVICE_ADMIN
, incluir las políticas especiales solicitadas como metadatos y filtrar las intencionesandroid.app.action.PROFILE_PROVISIONING_COMPLETE
yandroid.app.action.DEVICE_ADMIN_ENABLED
.El indicador DevicePolicyManager#MAKE_USER_DEMO , que está configurado para crear usuarios especiales de tipo demostración, es una API oculta. Esta bandera tiene un valor de constante 0x4.
La propiedad del dispositivo se debe asignar únicamente a través del titular de la función de administración del dispositivo o la aplicación ManagedProvisioning .
Las API de la clase DevicePolicyManager permiten que el propietario del dispositivo (DO) y el propietario del perfil (PO) apliquen varias políticas de dispositivo. Algunas de las funciones de DevicePolicyManager aplicables al modo de demostración minorista se enumeran a continuación.
Crear y administrar usuarios.
Reinicie el dispositivo.
Establezca los paquetes permitidos de LockTask.
Instale paquetes a través de PackageInstaller .
Bloquea la desinstalación de paquetes.
Habilite las actualizaciones automáticas del sistema. Los dispositivos descargarán y aplicarán automáticamente las actualizaciones OTA.
Desactiva el bloqueo de teclas.
Evite establecer contraseñas o huellas digitales.
Establezca un conjunto de configuraciones permitidas de Configuración.Global , Configuración.Secure y Configuración.Sistema .
Establezca 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 restringida: un permiso único para una sola aplicación. Esto no se aplica a los permisos de operaciones de aplicaciones, que los usuarios aún deben otorgar por usuario y por aplicación.Configure las restricciones de usuario relevantes para el modo 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
-
Actualizar vídeo de demostración usando la web
La aplicación RetailDemo en /packages/apps/RetailDemo tiene la capacidad de actualizar el vídeo de demostración si hay conectividad de red. La URL desde la que descargar el vídeo se puede configurar anulando el siguiente valor de cadena en la aplicación RetailDemo.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
Si es necesario usar diferentes videos en diferentes regiones, entonces se pueden configurar diferentes URL de descarga usando recursos de cadena específicos de la configuración regional en res/values-*/strings.xml . Por ejemplo, si es necesario utilizar diferentes vídeos en los Estados Unidos y Gran Bretaña, las URL 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 aplicación RetailDemo verifica en segundo plano si se proporciona la URL de descarga y si el video en la URL es más nuevo que el que se está reproduciendo.
Si es así, la aplicación RetailDemo se descarga y comienza a reproducir el vídeo. Una vez descargado el vídeo, se utilizará para reproducirlo en todas las sesiones de demostración en el futuro. Ninguna de las comprobaciones se vuelve a realizar hasta después del siguiente reinicio.
Directrices del vídeo de demostración
Los videos de demostración deben estar en formato vertical o, si se trata de una tableta, en la orientación natural del dispositivo, y pueden durar más de cinco segundos. El contenido no debe resultar quemado, ya que se reproducirá constantemente cuando esté en exhibición.
Consulte las definiciones de usuarios, perfiles y cuentas para desarrolladores de Android , la documentación de la API de Device Policy Manager y la aplicación de muestra del propietario del dispositivo para obtener más información.
Validación
CTS no cubre el modo de demostración minorista porque es una característica opcional. Las pruebas deben realizarse manualmente o con pruebas unitarias para la aplicación de demostración.
Sesión de demostración
Configuración de la sesión de demostración
Los dispositivos de demostración minorista pueden iniciarse en el modo de demostración minorista si están configurados para el modo de demostración desde fábrica. Alternativamente, los empleados minoristas pueden habilitar el modo minorista directamente desde el asistente de configuración.
Figura 2. Modo de demostración minorista
Mostrar sesión de demostración
Cuando el dispositivo ingresa al modo minorista, cambia a un nuevo usuario de demostración e inicia automáticamente el iniciador personalizado especificado en el recurso de superposición como se describe en Implementación . De forma predeterminada, este iniciador personalizado reproduce el video de demostración una y otra vez hasta que el usuario toca la pantalla para comenzar una sesión de usuario de demostración. En ese momento, el iniciador personalizado inicia el iniciador del sistema y luego sale. Los OEM pueden modificar el iniciador personalizado para iniciar adicionalmente otro servicio o actividad al salir.
Para mantener la integridad del modo comercial, el bloqueo de teclas está deshabilitado y ciertas acciones de Configuración rápida que podrían afectar negativamente el modo comercial también no están permitidas, incluidas las siguientes.
- Alternar modo avión.
- Eliminar o modificar puntos de acceso Wi-Fi (Configuración).
- Cambiar de operador (Configuración).
- Configuración del punto de acceso (Configuración).
- Cambio de usuario.
Además, el acceso también está bloqueado a algunas configuraciones globales que pueden afectar el modo minorista al desactivar lo siguiente:
- Configuración de wifi.
- Opciones de configuración de redes celulares, particularmente hotspots.
- Configuración de Bluetooth.
- Copia de seguridad y reinicio, fecha y hora y redes móviles (no aparecen en absoluto).
Si el usuario está inactivo durante un período de tiempo (90 segundos de forma predeterminada), el modo minorista muestra un cuadro de diálogo del sistema para solicitarle 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 minorista elimina al usuario de demostración actual, cambia a un nuevo usuario de demostración y repite el video original nuevamente. Si la pantalla se apaga usando 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 algunas configuraciones globales, incluidas las siguientes:
- Brillo
- Rotación automática
- Linterna
- Idioma
- Accesibilidad
Salir del modo de demostración minorista
Para salir del modo minorista, los empleados minoristas deben asegurarse de que el dispositivo de demostración no esté inscrito en la administración de dispositivos y restablecer los valores de fábrica del dispositivo desde el cargador de arranque.