Android 7.1.1 prend en charge le mode démo en magasin au niveau du système afin que les clients puissent examiner les appareils en action dans les magasins. Les appareils sont configurés pour la démonstration en magasin à l'aide d'une application propriétaire de l'appareil afin de s'assurer que l'utilisation de l'appareil est limitée à certaines applications en mode démonstration uniquement. Les utilisateurs finaux ne doivent pas pouvoir ajouter de compte personnel sur un appareil de démonstration en magasin. Android 8.1 modifie cette prise en charge pour créer des utilisateurs de démonstration via l'API createAndManageUser de DevicePolicyManager. Cela permet une personnalisation beaucoup plus poussée des OEM dans le mode Point de vente standard en termes de gestion des utilisateurs et des règles relatives aux appareils sur l'appareil de démonstration.
Bien que les API DevicePolicyManager puissent être utilisées sur les versions antérieures à Android 8.1, les utilisateurs de type démo (DevicePolicyManager.MAKE_USER_DEMO
) ne peuvent pas être créés avec l'API createAndManageUser dans les versions 8.0 et antérieures.
Implémentation dans Android 8.1 et versions ultérieures
Cette section présente les améliorations apportées à la plate-forme et décrit l'application de démonstration en magasin sous Android 8.1 et versions ultérieures.
Modifications de la plate-forme
Définir DEVICE_DEMO_MODE
Les appareils qui implémentent un mode de démonstration en magasin basé sur le propriétaire de l'appareil doivent définir Settings.Global.DEVICE_DEMO_MODE
sur 1 avant le provisionnement pour indiquer qu'ils sont provisionnés pour le mode démo en magasin.
SystemServer utilise cet indicateur pour gérer les aspects du mode Point de vente, tels que le profil d'alimentation et SystemUI.
Activer RetailDemoModeService
Sur les appareils qui implémentent un mode démo en magasin, l'assistant de configuration définit un paramètre global Global.DEVICE_DEMO_MODE
sur true
pour indiquer que l'appareil est passé en mode Point de vente. Lorsque ce paramètre s'affiche, RetailDemoModeService crée un utilisateur de démonstration et y accède lorsque l'utilisateur 0 est démarré, active le lanceur personnalisé spécifié dans une ressource de superposition et désactive SUW. System Server et SystemUI utilisent également cet indicateur pour gérer les aspects du mode Point de vente.
Définir un lanceur d'applications ou un lecteur vidéo personnalisé
Les fabricants d'appareils peuvent spécifier un lanceur d'applications personnalisé en remplaçant la ressource de framework config_demoModeLauncherComponent
spécifiée dans le fichier config.xml comme suit.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
L'application DemoPlayer de démonstration en magasin, située dans /packages/apps/RetailDemo, est le lanceur personnalisé par défaut du projet Android Open Source (AOSP). L'application recherche une vidéo dans une partition de l'appareil, par exemple /data/preloads/demo/retail_demo.mp4, et la lit en boucle. Lorsque l'utilisateur touche l'écran, le lanceur d'applications personnalisé désactive son composant d'activité, ce qui entraîne le démarrage du lanceur système par défaut.
Le composant personnalisé du lanceur d'applications personnalisé doit être marqué comme désactivé par défaut pour qu'il ne s'affiche pas dans les scénarios autres que la démonstration. Dans le scénario de démonstration, le serveur système active le config_demoModeLauncherComponent
spécifié lors du démarrage d'une nouvelle session de démonstration.
L'assistant de configuration recherche également la vidéo mentionnée précédemment pour fournir une affordance permettant d'accéder au mode retail. SUW peut être modifié pour rechercher un autre signe spécifique à l'OEM indiquant que le mode retail est compatible si la vidéo ne fait pas partie de la démonstration. Si des partitions système A/B sont présentes, la partition système B doit contenir la vidéo de démonstration à l'emplacement /preloads/demo. Celui-ci est copié dans /data/preloads/demo au premier démarrage.
Personnaliser les applications préchargées pour le mode démo en magasin
Les applications préchargées peuvent personnaliser leur expérience pour le mode démo en magasin en appelant l'API UserManager.isDemoUser()
pour voir si l'application est lancée dans un environnement de démonstration.
Certaines restrictions sont définies pour l'utilisateur de démonstration, comme les règles de profil ou d'appareil géré qui empêchent les applications et les utilisateurs d'effectuer certaines opérations.
L'une de ces restrictions est DISALLOW_MODIFY_ACCOUNTS
. Avec cette restriction, AccountManager et Settings n'autorisent pas l'ajout de comptes. Certaines applications Google réagissent à cette restriction et affichent un message d'erreur, tandis que d'autres ne vous demanderont pas de compte (YouTube et Photos, par exemple). Nous recommandons aux applications OEM de vérifier également si DISALLOW_MODIFY_ACCOUNTS
est défini et de gérer le scénario en conséquence.
Mises à jour du système
Par défaut, lorsque le mode commercial est activé, la règle de l'appareil est définie sur la mise à jour Over The Air (OTA) automatiquement. Les appareils vendus en magasin téléchargeront, redémarreront et installeront la mise à jour (en respectant les seuils de batterie) sans intervention de l'utilisateur.
Application de démonstration en magasin
Pour implémenter le mode démo en magasin basé sur le propriétaire de l'appareil, vous devez définir l'application Device Policy Controller en tant que propriétaire de l'appareil. L'AOSP contient une implémentation de référence de l'application RetailDemo dans /packages/apps/RetailDemo.
Les applications du propriétaire de l'appareil n'ont pas besoin de droits élevés ni de préinstallation sur l'image système. Elles peuvent être téléchargées lors du processus de configuration ou de provisionnement. Elles sont principalement implémentées comme des applications traditionnelles, avec les différences suivantes :
Toutes les applications de propriétaire d'appareil doivent étendre le composant DeviceAdminReceiver, qui sert de jeton d'autorisation pour toutes les API DevicePolicyManager. Le composant doit disposer de l'autorisation
android.permission.BIND_DEVICE_ADMIN
, inclure les règles spéciales demandées en tant que métadonnées et filtrer les intentsandroid.app.action.PROFILE_PROVISIONING_COMPLETE
etandroid.app.action.DEVICE_ADMIN_ENABLED
.L'indicateur DevicePolicyManager#MAKE_USER_DEMO, qui est défini pour créer des utilisateurs spéciaux de type "démo", est une API masquée. Cette option a une valeur constante de 0x4.
La propriété de l'appareil ne doit être attribuée que par le titulaire du rôle de gestion des appareils ou par l'application ManagedProvisioning.
Les API de la classe DevicePolicyManager permettent aux propriétaires d'appareils (DO) et de profil (PO) d'appliquer différentes règles relatives aux appareils. Voici quelques-unes des fonctions DevicePolicyManager applicables au mode démo en magasin.
Créez et gérez des utilisateurs.
Redémarrez l'appareil.
Définir les packages autorisés de LockTask.
Installez les packages via PackageInstaller.
Empêcher la désinstallation de packages
Activez les mises à jour automatiques du système. Les appareils téléchargent et appliquent automatiquement les mises à jour OTA.
Désactivez le clavier de protection.
Empêcher de définir des mots de passe ou des empreintes
Définissez une liste d'autorisation pour les paramètres Settings.Global, Settings.Secure et Settings.System.
Définissez la règle d'autorisation sur
PERMISSION_POLICY_AUTO_GRANT
, ce qui accorde automatiquement toutes les autorisations d'exécution. Les autorisations peuvent également être accordées de manière plus restreinte: une seule autorisation pour une seule application. Cela ne s'applique pas aux autorisations de fonctionnement des applications, que les utilisateurs doivent toujours accorder au niveau de chaque utilisateur et de chaque application.Définissez les restrictions utilisateur applicables au mode Point de vente, telles que définies dans UserManager, comme suit.
DISALLOW_MODIFY_ACCOUNTS
DISALLOW_USB_FILE_TRANSFER
DISALLOW_DEBUGGING_FEATURES
DISALLOW_CONFIG_WIFI
DISALLOW_CONFIG_BLUETOOTH
DISALLOW_INSTALL_UNKNOWN_SOURCES
DISALLOW_CONFIG_MOBILE_NETWORKS
Mettre à jour la vidéo de démonstration depuis le Web
L'application RetailDemo dans /packages/apps/RetailDemo peut mettre à jour la vidéo de démonstration si une connectivité réseau est disponible. L'URL à partir de laquelle télécharger la vidéo peut être configurée en remplaçant la valeur de chaîne suivante dans l'application RetailDemo.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
Si différentes vidéos doivent être utilisées dans différentes régions, vous pouvez configurer différentes URL de téléchargement en utilisant des ressources de chaîne spécifiques aux paramètres régionaux dans le fichier res/values-*/strings.xml. Par exemple, si des vidéos différentes doivent être utilisées aux États-Unis et en Grande-Bretagne, les URL de téléchargement correspondantes peuvent être placées respectivement dans res/values-en-rUS/strings.xml et res/values-en-rGB/strings.xml, comme indiqué ci-dessous.
Dans res/values-en-rUS/strings.xml :
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
Dans res/values-en-rGB/strings.xml :
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
Cette vidéo est téléchargée une fois au maximum à chaque redémarrage de l'appareil. Lorsque la vidéo est lue sur l'appareil, l'application RetailDemo vérifie en arrière-plan si l'URL de téléchargement est fournie et si la vidéo associée à l'URL est plus récente que celle en cours de lecture.
Si c'est le cas, l'application RetailDemo se télécharge et commence à lire la vidéo. Une fois la vidéo téléchargée, elle est utilisée pour la lecture dans toutes les sessions de démonstration suivantes. Aucune des vérifications ne se reproduira avant le redémarrage suivant.
Consignes pour les vidéos de démonstration
Les vidéos de démonstration doivent être en mode portrait ou, s'il s'agit d'une tablette, dans l'orientation naturelle de l'appareil, et leur durée doit être supérieure à cinq secondes. Les contenus ne doivent pas entraîner de brûlures d'écran, car ils sont lus en permanence lorsqu'ils sont affichés.
Pour en savoir plus, consultez les définitions des utilisateurs, des profils et des comptes pour les développeurs Android, la documentation de l'API Device Policy Manager et l'exemple d'application Propriétaire de l'appareil.
Validation
CTS ne couvre pas le mode démo en magasin, car il s'agit d'une fonctionnalité facultative. Les tests doivent être effectués manuellement ou avec des tests unitaires pour l'application de démonstration.
Session de démonstration
Configuration de la session de démonstration
Les appareils de démonstration en magasin peuvent démarrer en mode démo en magasin s'ils sont configurés pour ce mode dès l'usine. Les employés du retail peuvent également activer le mode Point de vente directement à partir de l'assistant de configuration.
Figure 2. Mode de démonstration en magasin
Afficher la session de démonstration
Lorsque l'appareil passe en mode Point de vente, il change d'utilisateur de démonstration et lance automatiquement le lanceur personnalisé spécifié dans la ressource de superposition, comme décrit dans la section Implémentation. Par défaut, ce lanceur d'applications personnalisé lit la vidéo de démonstration en boucle jusqu'à ce que l'utilisateur appuie sur l'écran pour démarrer une session utilisateur de démonstration. À ce moment-là, le lanceur personnalisé lance le lanceur système, puis se ferme. Les OEM peuvent modifier le lanceur d'applications personnalisé pour lancer un autre service ou une autre activité à la sortie.
Afin de préserver l'intégrité du mode Point de vente, le verrouillage du clavier est désactivé et certaines actions des Réglages rapides susceptibles d'affecter le mode Point de vente sont également interdites, y compris les suivantes.
- Bouton d'activation du mode Avion.
- Suppression ou modification de points d'accès Wi-Fi (paramètres)
- Modification de l'opérateur (Paramètres).
- Configuration du point d'accès (Paramètres)
- Changement d'utilisateur.
De plus, l'accès à certains paramètres globaux pouvant affecter le mode commercial est également bloqué en désactivant les éléments suivants :
- Paramètres Wi-Fi
- Options de configuration du réseau mobile, en particulier les points d'accès
- Configuration Bluetooth.
- Sauvegarde et réinitialisation, Date et heure, et Réseaux mobiles (ils ne s'affichent pas du tout).
Si l'utilisateur est inactif pendant un certain temps (90 secondes par défaut), le mode Retail affiche une boîte de dialogue système pour inviter l'utilisateur à quitter la session ou à continuer. Si l'utilisateur choisit de quitter la vidéo ou si aucune réponse n'est reçue pendant cinq secondes, le mode retail supprime l'utilisateur de démonstration actuel, passe à un nouvel utilisateur de démonstration et repasse la vidéo d'origine en boucle. Si l'écran est éteint à l'aide du bouton Marche/Arrêt, il se rallume automatiquement au bout de quelques secondes.
Une fois que vous avez quitté une session de démonstration, les appareils se mettent en sourdine et réinitialisent certains paramètres globaux, y compris les suivants :
- Luminosité
- Rotation automatique
- Lampe de poche
- Langue
- Accessibilité
Quitter le mode démo en magasin
Pour quitter le mode Point de vente, les employés du retail doivent s'assurer que l'appareil de démonstration n'est pas enregistré dans la gestion des appareils et rétablir la configuration d'usine à partir du bootloader.