Demomodus für den Einzelhandel

Mit Android 7.1.1 wurde die Unterstützung für den Demomodus für den Einzelhandel auf Systemebene eingeführt, damit Kunden die Geräte in Einzelhandelsgeschäften in Aktion sehen können. Geräte werden für den Demomodus für den Einzelhandel mit einer Geräteinhaber-App eingerichtet, um sicherzustellen, dass die Gerätenutzung auf bestimmte Apps im Demomodus beschränkt ist. Endnutzer dürfen auf einem Gerät im Demomodus für den Einzelhandel kein privates Konto hinzufügen können. Mit Android 8.1 wird diese Unterstützung überarbeitet, um Demonutzer über die DevicePolicyManager createAndManageUser API zu erstellen. Dies ermöglicht eine viel größere OEM-Anpassung des Standardmodus für den Einzelhandel in Bezug auf die Nutzerverwaltung und die Verwaltung von Geräterichtlinien auf dem Demogerät.

DevicePolicyManager APIs können zwar auf Versionen vor Android 8.1 verwendet werden, aber Nutzer vom Typ „Demo“ (DevicePolicyManager.MAKE_USER_DEMO) können mit der createAndManageUser API in Version 8.0 und früher nicht erstellt werden.

Implementierung in Android 8.1 und höher

In diesem Abschnitt werden die Plattformverbesserungen hervorgehoben und die Retail Demo Services App in Android 8.1 und höher beschrieben.

Plattformänderungen

DEVICE_DEMO_MODE festlegen

Auf Geräten, die einen auf dem Geräteinhaber basierenden Demomodus für den Einzelhandel implementieren, muss Settings.Global.DEVICE_DEMO_MODE vor der Bereitstellung auf 1 gesetzt werden, um anzugeben, dass das Gerät für den Demomodus für den Einzelhandel bereitgestellt wird. SystemServer verwendet dieses Flag, um Aspekte des Einzelhandelsmodus zu verwalten, z. B. das Energieprofil und die SystemUI.

RetailDemoModeService aktivieren

Auf Geräten, die einen Demomodus für den Einzelhandel implementieren, wird im Einrichtungsassistenten die globale Einstellung Global.DEVICE_DEMO_MODE auf true gesetzt, um anzugeben, dass das Gerät in den Einzelhandelsmodus versetzt wurde. Wenn diese Einstellung angezeigt wird, erstellt RetailDemoModeService einen Demonutzer und wechselt zu diesem, wenn Nutzer 0 gestartet wird. Außerdem wird der in einer Overlay-Ressource angegebene benutzerdefinierte Launcher aktiviert und SUW deaktiviert. System Server und SystemUI verwenden dieses Flag auch, um Aspekte des Einzelhandelsmodus zu verwalten.

Benutzerdefinierten Launcher oder Videoplayer festlegen

Gerätehersteller können einen benutzerdefinierten Launcher angeben, indem sie die in der Datei „config.xml“ angegebene Framework Ressource 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 Retail Demo Services App „DemoPlayer“ unter „/packages/apps/RetailDemo“ ist der standardmäßige benutzerdefinierte Launcher im Open-Source-Projekt für Android (Android Open Source Project, AOSP). Die App sucht nach einem Video auf einer Gerätepartition, z. B. unter „/data/preloads/demo/retail_demo.mp4“, und spielt es in einer Schleife ab. Wenn der Nutzer den Bildschirm berührt, deaktiviert der benutzerdefinierte Launcher seine Aktivitätskomponente, wodurch der standardmäßige System-Launcher gestartet wird.

Die benutzerdefinierte Komponente des benutzerdefinierten Launchers muss standardmäßig als deaktiviert markiert sein, damit sie in Nicht-Demo-Szenarien nicht angezeigt wird. Im Demo-Szenario aktiviert System Server die angegebene config_demoModeLauncherComponent, wenn eine neue Demo-Sitzung gestartet wird.

Der Einrichtungsassistent sucht auch nach dem zuvor erwähnten Video, um eine Möglichkeit zum Aufrufen des Einzelhandelsmodus zu bieten. SUW kann so geändert werden, dass nach einem anderen OEM-spezifischen Zeichen gesucht wird, das angibt, dass der Einzelhandelsmodus unterstützt wird, wenn das Video nicht Teil der Demo ist. Wenn es System-A/B-Partitionen gibt, muss die System-B-Partition das Demovideo unter „/preloads/demo“ enthalten. Dieses wird beim ersten Start nach „/data/preloads/demo“ kopiert.

Vorinstallierte Apps für den Demomodus für den Einzelhandel anpassen

Vorinstallierte Apps können ihre Nutzung für den Demomodus für den Einzelhandel anpassen, indem sie die UserManager.isDemoUser() API aufrufen, um zu prüfen, ob die App in einer Demo-Umgebung gestartet wird.

Für den Demonutzer werden bestimmte Einschränkungen festgelegt, ähnlich wie bei Richtlinien für verwaltete Geräte oder Profile, die verhindern, dass Apps und Nutzer bestimmte Vorgänge ausführen. Eine dieser Einschränkungen ist DISALLOW_MODIFY_ACCOUNTS. Mit dieser Einschränkung lassen AccountManager und 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 Google Fotos). Wir empfehlen, dass OEM-Apps auch prüfen, ob DISALLOW_MODIFY_ACCOUNTS festgelegt ist, und das Szenario entsprechend verarbeiten.

System updates

Wenn der Einzelhandelsmodus aktiviert ist, wird die Geräterichtlinie standardmäßig auf automatische Over-the-Air-Updates (OTA) gesetzt. Auf Einzelhandelsgeräten werden Updates ohne Nutzerinteraktion heruntergeladen, neu gestartet und installiert (unter Berücksichtigung der Akkuschwellenwerte).

Retail Demo-App

Für die Implementierung des auf dem Geräteinhaber basierenden Demomodus für den Einzelhandel muss eine Device Policy Controller App als Geräteinhaber festgelegt werden. Das AOSP enthält eine Referenzimplementierung der Retail Demo Services App unter „/packages/apps/RetailDemo“.

Für Geräteinhaber-Apps sind keine erhöhten Berechtigungen oder eine Vorinstallation auf dem Systemimage erforderlich. Sie können während der Einrichtung oder Bereitstellung heruntergeladen werden. Sie werden meist wie herkömmliche Apps implementiert, mit den folgenden Unterschieden:

Mit APIs in der DevicePolicyManager -Klasse können Geräteinhaber und Profilinhaber verschiedene Geräterichtlinien erzwingen. Einige der DevicePolicyManager Funktionen, die für den Demomodus für den Einzelhandel gelten, sind unten aufgeführt.

  • Nutzer erstellen und verwalten.

  • Starte das Gerät neu.

  • Zulässige Pakete für LockTask festlegen.

  • Pakete über PackageInstaller installieren.

  • Deinstallation von Paketen blockieren.

  • Automatische Systemupdates aktivieren. Auf Geräten werden OTA-Updates automatisch heruntergeladen und angewendet.

  • Keyguard deaktivieren.

  • Festlegen von Passwörtern oder Fingerabdrücken verhindern.

  • Eine Liste mit zulässigen Einstellungen für Settings.Global, Settings.Secure, und Settings.System festlegen.

  • Die Berechtigungsrichtlinie auf PERMISSION_POLICY_AUTO_GRANT setzen, wodurch alle Laufzeitberechtigungen automatisch erteilt 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 Nutzer weiterhin pro Nutzer und App erteilen müssen.

  • Nutzerbeschränkungen festlegen, die für den Einzelhandelsmodus relevant sind, wie in UserManager 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

Demovideo über das Web aktualisieren

Die Retail Demo Services App unter „/packages/apps/RetailDemo“ kann das Demovideo aktualisieren, wenn eine Netzwerkverbindung besteht. Die URL, von der das Video heruntergeladen werden soll, kann konfiguriert werden, indem der folgende Stringwert in der Retail Demo Services 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 verschiedene Download-URLs konfiguriert werden, indem länderspezifische Stringressourcen in „res/values-*/strings.xml“ verwendet werden. Wenn beispielsweise in den USA und Großbritannien unterschiedliche Videos verwendet werden müssen, können entsprechende Download-URLs in „res/values-en-rUS/strings.xml“ bzw. „res/values-en-rGB/strings.xml“ platziert werden, wie unten dargestellt.

  • 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 höchstens einmal pro Neustart des Geräts heruntergeladen. Während das Video auf dem Gerät wiedergegeben wird, prüft die Retail Demo Services App im Hintergrund, ob die Download-URL angegeben ist und das Video unter der URL neuer ist als das wiedergegebene Video.

Wenn dies der Fall ist, lädt die Retail Demo Services App das Video herunter und beginnt mit der Wiedergabe. Sobald das Video heruntergeladen wurde, wird es für die Wiedergabe in allen zukünftigen Demo-Sitzungen verwendet. Die Prüfungen werden erst nach dem nächsten Neustart wieder durchgeführt.

Richtlinien für Demovideos

Demovideos müssen im Hochformat oder, wenn es sich um ein Tablet handelt, in der natürlichen Ausrichtung des Geräts vorliegen und können eine beliebige Länge von mehr als fünf Sekunden haben. Inhalte dürfen nicht zu Burn-in führen, da sie bei der Anzeige ständig wiedergegeben werden.

Weitere Informationen finden Sie in den Android-Entwicklerdefinitionen von Nutzern, Profilen und Konten, in der Device Policy Manager API-Dokumentation und in der Beispiel-App für Geräteinhaber.

Validierung

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

Demo-Sitzung

Einrichtung der Demo-Sitzung

Geräte im Demomodus für den Einzelhandel können im Demomodus für den Einzelhandel gestartet werden, wenn sie ab Werk für den Demomodus konfiguriert sind. Alternativ können Mitarbeiter im Einzelhandel den Einzelhandelsmodus direkt über den Einrichtungsassistenten aktivieren.

Demomodus für den Einzelhandel

Abbildung 2 : Demomodus für den Einzelhandel

Demo-Sitzung anzeigen

Wenn das Gerät in den Einzelhandelsmodus wechselt, wird zu einem neuen Demonutzer gewechselt und der in der Overlay-Ressource angegebene benutzerdefinierte Launcher automatisch gestartet , wie unter Implementierung beschrieben. Standardmäßig wird mit diesem benutzerdefinierten Launcher das Demovideo in einer Schleife wiedergegeben, bis der Nutzer den Bildschirm berührt, um eine Demo-Sitzung zu starten. Dann startet der benutzerdefinierte Launcher den System-Launcher und wird beendet. OEMs können den benutzerdefinierten Launcher so ändern, dass beim Beenden zusätzlich ein anderer Dienst oder eine andere Aktivität gestartet wird.

Um die Integrität des Einzelhandelsmodus zu gewährleisten, ist Keyguard deaktiviert. Außerdem sind bestimmte Aktionen in den Schnelleinstellungen nicht zulässig, die sich negativ auf den Einzelhandelsmodus auswirken könnten, darunter die folgenden:

  • Flugmodus ein-/ausschalten
  • WLAN-Zugangspunkte entfernen oder ändern (Einstellungen)
  • Mobilfunkanbieter ändern (Einstellungen)
  • Hotspot konfigurieren (Einstellungen)
  • Nutzer wechseln

Außerdem 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
  • Sicherung und Zurücksetzen, Datum und Uhrzeit sowie Mobilfunknetze (werden überhaupt nicht angezeigt)

Wenn der Nutzer eine Weile inaktiv ist (standardmäßig 90 Sekunden), wird im Einzelhandelsmodus ein Systemdialog angezeigt, in dem der Nutzer aufgefordert wird, die Sitzung zu beenden oder fortzufahren. Wenn der Nutzer „Beenden“ auswählt oder fünf Sekunden lang keine Antwort erfolgt, wird der aktuelle Demonutzer im Einzelhandelsmodus entfernt, zu einem neuen Demonutzer gewechselt und das ursprüngliche Video wird wieder in einer Schleife wiedergegeben. Wenn der Bildschirm über die Ein/Aus-Taste ausgeschaltet wird, wird er nach einigen Sekunden automatisch wieder eingeschaltet.

Nach dem Beenden einer Demo-Sitzung werden Geräte stummgeschaltet und einige globale Einstellungen zurückgesetzt, darunter die folgenden:

  • Helligkeit
  • Automatische Drehung
  • Taschenlampe
  • Sprache
  • Bedienungshilfen

Demomodus für den Einzelhandel beenden

Um den Einzelhandelsmodus zu beenden, müssen Mitarbeiter im Einzelhandel dafür sorgen, dass das Demogerät nicht in der Geräteverwaltung registriert ist, und das Gerät über den Bootloader auf die Werkseinstellungen zurücksetzen.