Demomodus für den Einzelhandel

Mit Android 7.1.1 wurde die Unterstützung auf Systemebene für den Einzelhandels-Demomodus eingeführt, damit Kunden die Geräte in Aktion in Einzelhandelsgeschäften untersuchen können. Geräte werden mithilfe einer Gerätebesitzer-App für die Einzelhandelsdemo eingerichtet, um sicherzustellen, dass die Gerätenutzung nur auf bestimmte Demomodus-Apps beschränkt ist. Endbenutzer dürfen kein persönliches Konto auf einem Einzelhandels-Demogerät hinzufügen können. Android 8.1 überarbeitet diese Unterstützung, um Demobenutzer über die DevicePolicyManager- API „createAndManageUser“ zu erstellen. Dies ermöglicht eine viel größere OEM-Anpassung an den Standard-Einzelhandelsmodus in Bezug auf die Benutzerverwaltung und die Geräterichtlinienverwaltung auf dem Demogerät.

Während DevicePolicyManager- APIs auf Versionen vor Android 8.1 verwendet werden können, können Demo- Benutzer ( DevicePolicyManager.MAKE_USER_DEMO ) nicht mit der createAndManageUser- API in Versionen 8.0 und früher erstellt werden.

Implementierung in Android 8.1 und höher

Dieser Abschnitt hebt die Plattformverbesserungen hervor und beschreibt die Einzelhandels-Demo-App in Android 8.1 und höher.

Plattformänderungen

Stellen Sie DEVICE_DEMO_MODE

Geräte, die einen auf dem Gerätebesitzer basierenden Einzelhandelsdemomodus implementieren, müssen Settings.Global.DEVICE_DEMO_MODE vor der Bereitstellung auf 1 setzen, um anzugeben, dass das Gerät für den Einzelhandelsdemomodus bereitgestellt wird. SystemServer verwendet dieses Flag zum Verwalten von Aspekten des Einzelhandelsmodus, z. B. Energieprofil und SystemUI.

RetailDemoModeService

Bei Geräten, die einen Verkaufsdemomodus implementieren, setzt der Einrichtungsassistent eine globale Einstellung Global.DEVICE_DEMO_MODE auf true , um anzuzeigen, dass das Gerät in den Verkaufsmodus eingetreten ist. Wenn diese Einstellung angezeigt wird, erstellt RetailDemoModeService einen Demobenutzer und wechselt zu ihm, wenn Benutzer 0 gestartet wird, aktiviert den benutzerdefinierten Starter, der in einer Overlay-Ressource angegeben ist, und deaktiviert SUW. System Server und SystemUI verwenden dieses Flag auch, um Aspekte des Einzelhandelsmodus zu verwalten.

Legen Sie einen benutzerdefinierten Launcher oder Videoplayer fest

Gerätehersteller können einen benutzerdefinierten Launcher angeben, indem sie die in der Datei config_demoModeLauncherComponent wie folgt überschreiben .

<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>

Die Einzelhandels-Demo DemoPlayer-App unter /packages/apps/RetailDemo ist das standardmäßige benutzerdefinierte Startprogramm im Android Open Source Project (AOSP). Die App sucht nach einem Video in einer Gerätepartition wie /data/preloads/demo/retail_demo.mp4 und spielt es in einer Schleife ab. Wenn der Benutzer den Bildschirm berührt, deaktiviert der benutzerdefinierte Launcher seine Aktivitätskomponente, wodurch der standardmäßige Systemstarter gestartet wird.

Die benutzerdefinierte Komponente des benutzerdefinierten Startprogramms muss standardmäßig als deaktiviert markiert sein, damit sie in Nicht-Demo-Szenarien nicht angezeigt wird. Im Demoszenario aktiviert System Server die angegebene config_demoModeLauncherComponent beim Starten einer neuen Demositzung.

Der Setup-Assistent sucht auch nach dem zuvor erwähnten Video, um den Einstieg in den Einzelhandelsmodus zu ermöglichen. SUW kann geändert werden, um nach einem anderen OEM-spezifischen Zeichen zu suchen, dass der Einzelhandelsmodus unterstützt wird, wenn das Video nicht Teil der Demo ist. Wenn System-A/B-Partitionen vorhanden sind, muss die System-B-Partition das Demovideo unter /preloads/demo enthalten. Dies wird beim ersten Booten nach /data/preloads/demo kopiert.

Passen Sie vorinstallierte Apps für den Einzelhandels-Demomodus an

Vorinstallierte Apps können ihre Erfahrung für den Einzelhandelsdemomodus anpassen, indem sie die UserManager.isDemoUser() API aufrufen, um zu sehen, ob die App in einer Demoumgebung gestartet wird.

Im Demo-Benutzer werden bestimmte Einschränkungen festgelegt, ähnlich wie bei verwalteten Geräte- oder Profilrichtlinien, die Apps und Benutzer daran hindern, bestimmte Vorgänge auszuführen. Eine dieser Einschränkungen ist DISALLOW_MODIFY_ACCOUNTS . Mit dieser Einschränkung lassen der AccountManager und die Einstellungen das Hinzufügen von Konten nicht zu. Einige Google-Apps reagieren auf diese Einschränkung und zeigen eine Fehlermeldung an, andere fordern kein Konto an (z. B. YouTube und Fotos). Wir empfehlen, dass OEM-Apps auch überprüfen, ob DISALLOW_MODIFY_ACCOUNTS festgelegt ist, und das Szenario entsprechend behandeln.

Systemaktualisierung

Wenn der Einzelhandelsmodus aktiviert ist, ist die Geräterichtlinie standardmäßig auf automatische OTA-Aktualisierung (Over-the-Air) eingestellt. Einzelhandelsgeräte laden das Update herunter, starten es neu und installieren es (unter Berücksichtigung der Batterieschwellenwerte) ohne Benutzerinteraktion.

Demo-App für den Einzelhandel

Für die Implementierung des geräteeigentümerbasierten Demomodus für den Einzelhandel muss eine Device Policy Controller- App als Geräteeigentümer festgelegt werden. Das AOSP enthält eine RetailDemo-Referenz-App-Implementierung in /packages/apps/RetailDemo .

Gerätebesitzer-Apps benötigen keine erhöhten Berechtigungen oder Vorinstallation auf dem Systemabbild und können während des Einrichtungs- oder Bereitstellungsprozesses heruntergeladen werden. Sie werden meist wie herkömmliche Apps implementiert, mit folgenden Unterschieden:

APIs in der DevicePolicyManager -Klasse ermöglichen es dem Geräteeigentümer (DO) und dem Profileigentümer (PO), verschiedene Geräterichtlinien durchzusetzen. Einige der DevicePolicyManager- Funktionen, die für den Einzelhandelsdemomodus gelten, sind nachfolgend aufgeführt.

  • Erstellen und verwalten Sie Benutzer.

  • Starte das Gerät neu.

  • Legen Sie für LockTask zugelassene Pakete fest.

  • Installieren Sie Pakete über PackageInstaller .

  • Verhindern Sie, dass Pakete deinstalliert werden.

  • Aktivieren Sie automatische Systemaktualisierungen. Geräte laden OTA-Updates automatisch herunter und wenden sie an.

  • Deaktivieren Sie die Tastensperre.

  • Verhindern Sie das Setzen von Passwörtern oder Fingerabdrücken.

  • Legen Sie einen Satz von Einstellungen auf der Positivliste Settings.Global , Settings.Secure und Settings.System fest.

  • Legen Sie die Berechtigungsrichtlinie auf PERMISSION_POLICY_AUTO_GRANT , wodurch automatisch alle Laufzeitberechtigungen gewährt werden. Berechtigungen können auch enger gefasst werden: eine einzelne Berechtigung für eine einzelne App. Dies gilt nicht für App-Ops-Berechtigungen, die Benutzer weiterhin pro Benutzer und pro App erteilen müssen.

  • Legen Sie für den Einzelhandelsmodus relevante Benutzereinschränkungen fest, wie im UserManager wie folgt definiert.

    • DISALLOW_MODIFY_ACCOUNTS
    • DISALLOW_USB_FILE_TRANSFER
    • DISALLOW_DEBUGGING_FEATURES
    • DISALLOW_CONFIG_WIFI
    • DISALLOW_CONFIG_BLUETOOTH
    • DISALLOW_INSTALL_UNKNOWN_SOURCES
    • DISALLOW_CONFIG_MOBILE_NETWORKS

Aktualisieren Sie das Demo-Video über das Internet

Die RetailDemo-App in /packages/apps/RetailDemo kann das Demovideo aktualisieren, wenn eine Netzwerkverbindung besteht. Die URL zum Herunterladen des Videos kann konfiguriert werden, indem der folgende Zeichenfolgenwert in der RetailDemo-App überschrieben wird.

<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>

Wenn in verschiedenen Regionen unterschiedliche Videos verwendet werden müssen, können unterschiedliche Download-URLs konfiguriert werden, indem gebietsschemaspezifische Zeichenfolgenressourcen in res/values-*/strings.xml verwendet werden . Sollen beispielsweise in den USA und Großbritannien unterschiedliche Videos verwendet werden, können entsprechende Download-URLs in res/values-en-rUS/strings.xml und res/values-en-rGB/strings.xml hinterlegt werden , jeweils wie folgt gezeigt.

  • In res/values-en-rUS/strings.xml:

    <string name="retail_demo_video_download_url">download URL for US video goes here</string>
    
  • In res/values-en-rGB/strings.xml:

    <string name="retail_demo_video_download_url">download URL for UK video goes here</string>
    

Dieses Video wird bei jedem Neustart des Geräts höchstens einmal heruntergeladen. Wenn das Video auf dem Gerät abgespielt wird, prüft die RetailDemo-App im Hintergrund, ob die Download-URL bereitgestellt wird und das Video unter der URL neuer ist als das abgespielte.

Wenn dies der Fall ist, wird die RetailDemo-App heruntergeladen und beginnt mit der Wiedergabe des Videos. Sobald das Video heruntergeladen ist, wird es für die Wiedergabe in allen zukünftigen Demo-Sitzungen verwendet. Keine der Überprüfungen wird bis nach dem nächsten Neustart erneut durchgeführt.

Richtlinien für Demovideos

Demonstrationsvideos müssen im Hochformat oder, wenn es sich um ein Tablet handelt, in der natürlichen Ausrichtung des Geräts vorliegen und dürfen länger als fünf Sekunden sein. Inhalte dürfen nicht zum Einbrennen führen, da sie während der Anzeige ständig abgespielt werden.

Weitere Informationen finden Sie unter Android Developer Definitions of Users, Profiles and Accounts, Device Policy Manager API Documentation und Sample Device Owner App .

Validierung

CTS deckt den Demomodus für den Einzelhandel nicht ab, da es sich um eine optionale Funktion handelt. Die Tests müssen manuell oder mit Unit-Tests für die Demo-App durchgeführt werden.

Demo-Session

Einrichtung der Demo-Session

Einzelhandelsdemogeräte können im Einzelhandelsdemomodus gestartet werden, wenn sie ab Werk für den Demomodus konfiguriert wurden. Alternativ können Einzelhandelsmitarbeiter den Einzelhandelsmodus direkt über den Einrichtungsassistenten aktivieren.

Retail demo mode

Abbildung 2. Demonstrationsmodus für den Einzelhandel

Demo-Session anzeigen

Wenn das Gerät in den Einzelhandelsmodus wechselt, wechselt es zu einem neuen Demobenutzer und startet automatisch das benutzerdefinierte Startprogramm, das in der Overlay-Ressource angegeben ist, wie in Implementierung beschrieben. Standardmäßig spielt dieser benutzerdefinierte Launcher das Demovideo wiederholt ab, bis der Benutzer den Bildschirm berührt, um eine Demobenutzersitzung zu beginnen. Zu diesem Zeitpunkt startet der benutzerdefinierte Launcher den System Launcher und wird dann beendet. OEMs können den benutzerdefinierten Starter ändern, um beim Beenden zusätzlich einen anderen Dienst oder eine andere Aktivität zu starten.

Um die Integrität des Einzelhandelsmodus aufrechtzuerhalten, ist die Tastensperre deaktiviert und bestimmte Aktionen aus den Schnelleinstellungen, die den Einzelhandelsmodus beeinträchtigen könnten, sind ebenfalls nicht zulässig, einschließlich der folgenden.

  • Flugmodus umschalten.
  • Entfernen oder Ändern von Wi-Fi-Zugangspunkten (Einstellungen).
  • Mobilfunkanbieter wechseln (Einstellungen).
  • Hotspot konfigurieren (Einstellungen).
  • Benutzerwechsel.

Darüber hinaus wird der Zugriff auf einige globale Einstellungen blockiert, die sich auf den Einzelhandelsmodus auswirken können, indem Folgendes deaktiviert wird:

  • Wlan einstellungen.
  • Konfigurationsoptionen für Mobilfunknetze, insbesondere Hotspots.
  • Bluetooth-Konfiguration.
  • Backup & Reset, Date & Time und Mobile Networks (sie werden überhaupt nicht angezeigt).

Wenn der Benutzer für einige Zeit inaktiv ist (standardmäßig 90 Sekunden), zeigt der Einzelhandelsmodus einen Systemdialog an, um den Benutzer aufzufordern, die Sitzung entweder zu beenden oder fortzufahren. Wenn der Benutzer sich zum Beenden entscheidet oder fünf Sekunden lang keine Antwort erfolgt, entfernt der Einzelhandelsmodus den aktuellen Demobenutzer, wechselt zu einem neuen Demobenutzer und durchläuft das Originalvideo erneut. Wenn der Bildschirm mit dem Netzschalter ausgeschaltet wird, schaltet er sich nach einigen Sekunden automatisch wieder ein.

Nach dem Beenden einer Demo-Sitzung schalten sich die Geräte selbst stumm und setzen einige globale Einstellungen zurück, darunter die folgenden:

  • Helligkeit
  • Automatische Drehung
  • Taschenlampe
  • Sprache
  • Barrierefreiheit

Beenden Sie den Demomodus für den Einzelhandel

Um den Einzelhandelsmodus zu beenden, müssen Einzelhandelsmitarbeiter sicherstellen, dass das Demogerät nicht in der Geräteverwaltung registriert ist, und das Gerät über den Bootloader auf die Werkseinstellungen zurücksetzen.