Android 7.1.1 a introduit la prise en charge au niveau du système du mode Retail Demo 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 révise cette prise en charge pour créer des utilisateurs de démonstration via l'API DevicePolicyManager createAndManageUser. Cela permet une personnalisation OEM beaucoup plus importante du mode commercial standard en termes de gestion des utilisateurs et de gestion des règles de l'appareil 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 met en avant les améliorations apportées à la plate-forme et décrit l'application de démonstration pour le commerce en magasin sous Android 8.1 et versions ultérieures.
Modifications apportées à la plate-forme
Définir DEVICE_DEMO_MODE
Les appareils implémentant un mode 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 que l'appareil est provisionné pour le mode démonstration en magasin.
SystemServer utilise cet indicateur pour gérer certains aspects du mode commercial, tels que le profil d'alimentation et SystemUI.
Activer RetailDemoModeService
Sur les appareils implémentant un mode démonstration 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 vente au détail. 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 certains aspects du mode retail.
Définir un lanceur ou un lecteur vidéo personnalisés
Les fabricants d'appareils peuvent spécifier un lanceur 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 appuie sur l'écran, le lanceur d'applications personnalisé désactive son composant d'activité, ce qui entraîne le démarrage du lanceur d'applications système par défaut.
Le composant personnalisé du lanceur personnalisé doit être marqué comme désactivé par défaut afin qu'il ne s'affiche pas dans les scénarios autres que les démonstrations. 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. Il 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émonstration 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 dans 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 demandent pas de compte (par exemple, YouTube et Photos). 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
L'implémentation du mode démonstration en magasin basé sur le propriétaire de l'appareil nécessite qu'une application Device Policy Controller soit définie comme propriétaire de l'appareil. L'AOSP contient une implémentation d'application RetailDemo de référence 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 du propriétaire de l'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 de constante 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 au propriétaire de l'appareil (PO) et au propriétaire du profil (PO) d'appliquer différentes règles sur les appareils. Certaines des fonctions DevicePolicyManager applicables au mode démonstration en magasin sont listées ci-dessous.
Créez et gérez des utilisateurs.
Redémarrez l'appareil.
Définissez les packages autorisés par LockTask.
Installez les packages via PackageInstaller.
Empêcher la désinstallation des 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 d'app-ops, que les utilisateurs doivent toujours accorder par utilisateur et par application.Définissez les restrictions utilisateur applicables au mode retail, comme défini 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
Modifier la vidéo de démonstration sur le Web
L'application RetailDemo dans /packages/apps/RetailDemo peut mettre à jour la vidéo de démonstration si la 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, différentes URL de téléchargement peuvent être configurées à l'aide de ressources de chaîne propres aux paramètres régionaux dans res/values-*/strings.xml. Par exemple, si différentes vidéos doivent être utilisées aux États-Unis et en Grande-Bretagne, les URL de téléchargement correspondantes peuvent être placées dans res/values-en-rUS/strings.xml et res/values-en-rGB/strings.xml, respectivement, 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 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 télécharge la vidéo et commence à la lire. Une fois la vidéo téléchargée, elle est utilisée pour la lecture dans toutes les sessions de démonstration à venir. Aucune des vérifications ne sera effectuée avant le prochain redémarrage.
Consignes concernant les vidéos de démonstration
Les vidéos de démonstration doivent être au format portrait ou, s'il s'agit d'une tablette, dans l'orientation naturelle de l'appareil. Elles peuvent durer plus de cinq secondes. Le contenu ne doit pas entraîner de brûlure d'écran, car il sera lu en permanence lorsqu'il s'affichera.
Pour en savoir plus, consultez les définitions pour les développeurs Android des utilisateurs, des profils et des comptes, la documentation de l'API Device Policy Manager et l'exemple d'application propriétaire d'appareil.
Validation
Le CTS ne couvre pas le mode démonstration 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.
Séance 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 magasin peuvent également activer le mode commerce directement depuis l'assistant de configuration.
Figure 2. Mode démonstration en magasin
Afficher la session de démonstration
Lorsque l'appareil passe en mode commercial, il passe à un nouvel utilisateur de démonstration et démarre 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 commencer une session utilisateur de démonstration. À ce stade, le lanceur personnalisé démarre le lanceur du 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.
Pour préserver l'intégrité du mode Retail, le verrouillage des touches est désactivé et certaines actions des paramètres rapides qui pourraient nuire au mode Retail sont également interdites, y compris les suivantes.
- Bouton du mode Avion
- Suppression ou modification de points d'accès Wi-Fi (paramètres)
- Modifier l'opérateur (paramètres)
- Configuration du point d'accès (paramètres)
- Changement d'utilisateur.
En outre, l'accès est également bloqué à certains paramètres globaux pouvant affecter le mode retail 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 démonstration 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 Retail, les employés du commerce 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 de l'appareil à partir du bootloader.