Mode démo en magasin

Android 7.1.1 a introduit la prise en charge du 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émo 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 aux OEM de personnaliser beaucoup plus le mode Boutique 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 de démonstration (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 commerciale dans Android 8.1 et versions ultérieures.

Modifications de la plate-forme

Définir DEVICE_DEMO_MODE

Les appareils qui implémentent un mode démo pour le commerce 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émo pour le commerce. SystemServer utilise cet indicateur pour gérer les aspects du mode Boutique, tels que le profil d'alimentation et SystemUI.

Activer RetailDemoModeService

Sur les appareils qui implémentent 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 magasin. Lorsqu'il voit ce paramètre, RetailDemoModeService crée un utilisateur de démonstration et passe à celui-ci lorsque l'utilisateur 0 est démarré, active le lanceur d'applications personnalisé spécifié dans une ressource de superposition et désactive SUW. SystemServer et SystemUI utilisent également cet indicateur pour gérer certains aspects du mode Boutique.

Définir un lanceur ou un lecteur vidéo personnalisés

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 d'applications personnalisé par défaut dans le 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 lanceur personnalisé doit avoir son composant personnalisé marqué comme désactivé par défaut afin qu'il ne s'affiche pas dans les scénarios non démo. Dans le scénario de démonstration, SystemServer 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 permettre d'accéder au mode Boutique. SUW peut être modifié pour rechercher un autre signe spécifique à l'OEM indiquant que le mode Boutique est pris en charge si la vidéo ne fait pas partie de la démo. S'il existe des partitions A/B du système, la partition B du système doit contenir la vidéo de démonstration dans /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émo en magasin en appelant l'API UserManager.isDemoUser() pour vérifier 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 relatives aux appareils ou profils gérés 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 (comme 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 Boutique est activé, la règle relative à l'appareil est définie sur la mise à jour Over The Air (OTA) automatique. Les appareils commerciaux 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émo pour le secteur du commerce de détail 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 de l'application RetailDemo de référence dans /packages/apps/RetailDemo.

Les applications propriétaires de l'appareil n'ont pas besoin de privilèges élevés ni d'être préinstallées sur l'image système. Elles peuvent être téléchargées lors du processus de configuration ou de provisionnement. Elles sont généralement implémentées comme des applications traditionnelles, avec les différences suivantes :

Les API de la classe DevicePolicyManager permettent au propriétaire de l'appareil (DO) et au propriétaire du 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éfinissez les packages autorisés pour LockTask.

  • Installez les packages via PackageInstaller.

  • Empêchez la désinstallation de packages.

  • Activez les mises à jour automatiques du système. Les appareils téléchargeront et appliqueront automatiquement les mises à jour OTA.

  • Désactivez la protection clavier.

  • empêcher la définition de mots de passe ou d'empreintes digitales ;

  • Définissez un ensemble de paramètres Settings.Global, Settings.Secure et Settings.System autorisés.

  • 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 spécifique : une seule autorisation pour une seule application. Cela ne s'applique pas aux autorisations app-ops, que les utilisateurs doivent toujours accorder par utilisateur et par application.

  • Définissez les restrictions utilisateur pertinentes pour le mode magasin, 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, vous pouvez configurer différentes URL de téléchargement à l'aide de ressources de chaîne spécifiques 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 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 au maximum une fois à 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 à 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 lance la lecture de 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 à venir. Aucune des vérifications ne se produit à nouveau avant le prochain redémarrage.

Consignes pour les vidéos de démonstration

Les vidéos de démonstration doivent être au format portrait ou, si elles sont destinées à une tablette, dans l'orientation naturelle de l'appareil. Leur durée peut être supérieure à cinq secondes. Le contenu ne doit pas entraîner de brûlure d'écran, car il sera lu en continu lorsqu'il sera affiché.

Pour en savoir plus, consultez les définitions des développeurs Android concernant les utilisateurs, les profils et les comptes, la documentation sur l'API Device Policy Manager et l'exemple d'application Device Owner.

Validation

Le 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 à l'aide de tests unitaires pour l'application de démonstration.

Séance de démonstration

Configuration d'une session de démonstration

Les appareils de démonstration en magasin peuvent démarrer en mode démo s'ils sont configurés pour ce mode en usine. Les employés du magasin peuvent également activer le mode magasin directement depuis l'assistant de configuration.

Mode démo en magasin

Figure 2. Mode démo en magasin

Afficher la session de démonstration

Lorsque l'appareil passe en mode Boutique, il bascule vers un nouvel utilisateur de démonstration et démarre automatiquement le lanceur d'applications personnalisé spécifié dans la ressource de superposition, comme décrit dans Implémentation. Par défaut, ce lanceur d'applications personnalisé lit la vidéo de démonstration en boucle jusqu'à ce que l'utilisateur touche l'écran pour commencer une session utilisateur de démonstration. À ce moment-là, le lanceur d'applications personnalisé démarre le lanceur d'applications système, puis se ferme. Les OEM peuvent modifier le lanceur personnalisé pour lancer également un autre service ou une autre activité à la sortie.

Pour préserver l'intégrité du mode Boutique, keyguard est désactivé et certaines actions de la configuration rapide qui pourraient nuire au mode Boutique sont également interdites, y compris les suivantes.

  • Bouton bascule du mode Avion.
  • Supprimer ou modifier des points d'accès Wi-Fi (paramètres)
  • Changer d'opérateur (paramètres)
  • Configuration du point d'accès (paramètres)
  • Changement d'utilisateur.

L'accès est également bloqué à certains paramètres généraux qui peuvent affecter le mode Boutique 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 n'apparaissent pas du tout).

Si l'utilisateur est inactif pendant un certain temps (90 secondes par défaut), le mode Boutique affiche une boîte de dialogue système pour lui demander de quitter la session ou de continuer. Si l'utilisateur choisit de quitter le mode Magasin ou s'il n'y a pas de réponse pendant cinq secondes, le mode Magasin supprime l'utilisateur de démonstration actuel, passe à un nouvel utilisateur de démonstration et relance la vidéo d'origine. Si l'écran est éteint à l'aide du bouton Marche/Arrêt, il se rallume automatiquement au bout de quelques secondes.

Après avoir quitté une session de démonstration, les appareils se mettent en mode silencieux et réinitialisent certains paramètres généraux, y compris les suivants :

  • Luminosité
  • Rotation automatique
  • Lampe de poche
  • Langue
  • Accessibilité

Quitter le mode démo en magasin

Pour quitter le mode Boutique, les employés 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.