Demomodus für den Einzelhandel

Mit Android 7.1.1 wurde die Unterstützung des 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äte-Eigentümer-App eingerichtet, um sicherzustellen, dass die Gerätenutzung auf bestimmte Apps im Demomodus beschränkt ist. Endnutzer dürfen auf einem Einzelhandels-Demogerät kein privates Konto hinzufügen können. Unter Android 8.1 wurde diese Unterstützung überarbeitet, um Demokonten über die DevicePolicyManager API createAndManageUser zu erstellen. Dies ermöglicht eine viel stärkere OEM-Anpassung des Standard-Einzelhandelsmodus in Bezug auf die Nutzer- und Geräterichtlinienverwaltung auf dem Demogerät.

Die DevicePolicyManager-APIs können in Versionen vor Android 8.1 verwendet werden. demo-type-Nutzer (DevicePolicyManager.MAKE_USER_DEMO) können jedoch in Versionen 8.0 und früher nicht mit der createAndManageUser-API erstellt werden.

Implementierung in Android 8.1 und höher

In diesem Abschnitt werden die Plattformverbesserungen beschrieben und die Retail Demo App in Android 8.1 und höher erläutert.

Plattformänderungen

DEVICE_DEMO_MODE festlegen

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

RetailDemoModeService aktivieren

Auf Geräten, auf denen ein Demomodus für den Einzelhandel implementiert ist, wird im Einrichtungsassistenten die globale Einstellung Global.DEVICE_DEMO_MODE auf true gesetzt, um anzugeben, dass das Gerät in den Demomodus für den Einzelhandel gewechselt ist. Wenn diese Einstellung angezeigt wird, erstellt RetailDemoModeService einen Demonutzer und wechselt zu ihm, 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 Framework-Ressource config_demoModeLauncherComponent, die in der Datei config.xml angegeben ist, wie folgt überschreiben.

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

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

Die benutzerdefinierte Komponente des benutzerdefinierten Launchers muss standardmäßig als deaktiviert gekennzeichnet sein, damit sie nicht in Nicht-Demo-Szenarien angezeigt wird. Im Demomodus aktiviert SystemServer beim Start einer neuen Demositzung die angegebene config_demoModeLauncherComponent.

Der Einrichtungsassistent sucht auch nach dem oben erwähnten Video, um die Möglichkeit zu bieten, den Einzelhandelsmodus zu aktivieren. SUW kann so angepasst werden, dass nach einem anderen OEM-spezifischen Zeichen gesucht wird, das darauf hinweist, dass der Einzelhandelsmodus unterstützt wird, wenn das Video nicht Teil der Demo ist. Wenn es A/B-Systempartitionen gibt, muss die B-Systempartition das Demovideo unter /preloads/demo enthalten. Diese Datei wird beim ersten Booten nach /data/preloads/demo kopiert.

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

Vorinstallierte Apps können die Nutzung im Retail Demo Mode anpassen, indem sie die UserManager.isDemoUser() API aufrufen, um zu prüfen, ob die App in einer Demo-Umgebung gestartet wird.

Im Demokonto sind bestimmte Einschränkungen festgelegt, die denen von Richtlinien für verwaltete Geräte oder Profile ähneln. Sie verhindern, dass Apps und Nutzer bestimmte Vorgänge ausführen. Eine dieser Einschränkungen ist DISALLOW_MODIFY_ACCOUNTS. Mit dieser Einschränkung kann in AccountManager und Einstellungen keine Konten hinzugefügt werden. 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 prüfen, ob DISALLOW_MODIFY_ACCOUNTS festgelegt ist, und das Szenario entsprechend behandeln.

Systemupdates

Wenn der Einzelhandelsmodus aktiviert ist, wird die Geräte-Richtlinie standardmäßig auf automatische Over-the-Air-Updates (OTA) festgelegt. Auf Einzelhandelsgeräten wird das Update heruntergeladen, das Gerät wird neu gestartet und das Update wird installiert (unter Berücksichtigung der Akkustandsgrenzwerte), ohne dass der Nutzer eingreifen muss.

Demo-App für den Einzelhandel

Für die Implementierung des Einzelhandels-Demomodus auf Grundlage des Geräteinhabers muss eine Device Policy Controller-App als Geräteinhaber festgelegt werden. AOSP enthält eine Referenzimplementierung der RetailDemo-App unter /packages/apps/RetailDemo.

Für Apps für Geräteinhaber sind keine erhöhten Berechtigungen oder eine Vorabinstallation im 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 den APIs in der Klasse DevicePolicyManager können Geräteeigentümer (Device Owner, DO) und Profileigentümer (Profile Owner, PO) verschiedene Geräterichtlinien erzwingen. Einige der für den Demomodus für den Einzelhandel anwendbaren DevicePolicyManager-Funktionen sind unten aufgeführt.

  • Nutzer erstellen und verwalten.

  • Starten Sie das Gerät neu.

  • Legen Sie die zulässigen LockTask-Pakete fest.

  • Installieren Sie Pakete über PackageInstaller.

  • Deinstallation von Paketen blockieren

  • Aktivieren Sie automatische Systemupdates. OTA-Updates werden automatisch auf Geräte heruntergeladen und angewendet.

  • Deaktivieren Sie den Keyguard.

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

  • Legen Sie eine zugelassene Gruppe von Settings.Global-, Settings.Secure- und Settings.System-Einstellungen fest.

  • Legen Sie die Berechtigungsrichtlinie auf PERMISSION_POLICY_AUTO_GRANT fest. Dadurch werden automatisch alle Laufzeitberechtigungen erteilt. Berechtigungen können auch eingeschränkter erteilt werden, z. B. eine einzelne Berechtigung für eine einzelne App. Das gilt nicht für App-Ops-Berechtigungen, die Nutzer weiterhin pro Nutzer und pro App erteilen müssen.

  • Legen Sie die für den Einzelhandelsmodus relevanten Nutzerbeschränkungen wie in UserManager definiert folgendermaßen fest.

    • 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 RetailDemo-App in /packages/apps/RetailDemo kann das Demovideo aktualisieren, wenn eine Netzwerkverbindung besteht. Die URL, über die das Video heruntergeladen werden kann, kann durch Überschreiben des folgenden String-Werts in der RetailDemo-App konfiguriert werden.

<!-- 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 sollen, können Sie verschiedene Download-URLs konfigurieren, indem Sie gebietsschemaspezifische String-Ressourcen in res/values-*/strings.xml verwenden. Wenn beispielsweise in den USA und in Großbritannien unterschiedliche Videos verwendet werden sollen, können die entsprechenden 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. Wenn das Video auf dem Gerät wiedergegeben wird, prüft die RetailDemo-App im Hintergrund, ob die Download-URL angegeben ist und das Video unter der URL neuer ist als das, das gerade wiedergegeben wird.

Wenn ja, wird das Video in der RetailDemo-App heruntergeladen und abgespielt. Sobald das Video heruntergeladen wurde, wird es in allen zukünftigen Demositzungen verwendet. Keine der Prüfungen wird vor dem nächsten Neustart wiederholt.

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 aufgenommen werden und können länger als fünf Sekunden sein. Inhalte dürfen nicht zu Einbrennen führen, da sie auf dem Display ständig wiedergegeben werden.

Weitere Informationen finden Sie in den Android-Entwicklerdefinitionen für Nutzer, Profile und Konten, in der Device Policy Manager API-Dokumentation und in der Beispiel-App für Geräteeigentümer.

Zertifizierungsstufe

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

Demo-Sitzung

Einrichtung der Demoeinheit

Geräte 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 Einzelhandelsmitarbeiter den Einzelhandelsmodus direkt über den Einrichtungsassistenten aktivieren.

Demomodus für den Einzelhandel

Abbildung 2: Demomodus für den Einzelhandel

Demositzung anzeigen

Wenn das Gerät in den Einzelhandelsmodus wechselt, wird ein neuer Demonutzer verwendet und der in der Overlay-Ressource angegebene benutzerdefinierte Launcher wird automatisch gestartet, wie unter Implementierung beschrieben. Standardmäßig wird in diesem benutzerdefinierten Launcher das Demovideo in einer Schleife wiedergegeben, bis der Nutzer den Bildschirm berührt, um eine Demonutzersitzung zu starten. Zu diesem Zeitpunkt startet der benutzerdefinierte Launcher den System-Launcher und wird dann beendet. Erstausrüster 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 aufrechtzuerhalten, ist Keyguard deaktiviert. Bestimmte Aktionen in den Schnelleinstellungen, die sich negativ auf den Einzelhandelsmodus auswirken könnten, sind ebenfalls nicht zulässig. Dazu gehören die folgenden:

  • Schalter für den Flugmodus
  • WLAN-Zugangspunkte entfernen oder ändern (Einstellungen).
  • Mobilfunkanbieter wechseln (Einstellungen)
  • Hotspot konfigurieren (Einstellungen)
  • Nutzerwechsel

Außerdem wird der Zugriff auf einige globale Einstellungen blockiert, die sich auf den Einzelhandelsmodus auswirken können. Dazu werden die folgenden Einstellungen deaktiviert:

  • WLAN-Einstellungen
  • Konfigurationsoptionen für Mobilfunknetze, insbesondere Hotspots.
  • Bluetooth-Konfiguration
  • „Sichern & zurücksetzen“, „Datum & Uhrzeit“ und „Mobilfunknetze“ (werden überhaupt nicht angezeigt).

Wenn der Nutzer eine Weile inaktiv ist (standardmäßig 90 Sekunden), wird im Einzelhandelsmodus ein Systemdialogfeld angezeigt, in dem der Nutzer aufgefordert wird, die Sitzung zu beenden oder fortzufahren. Wenn der Nutzer den Einzelhandelsmodus beendet oder fünf Sekunden lang keine Reaktion erfolgt, wird der aktuelle Demonutzer entfernt, zu einem neuen Demonutzer gewechselt und das ursprüngliche Video wird noch einmal abgespielt. Wenn der Bildschirm über die Ein/Aus-Taste ausgeschaltet wird, schaltet er sich nach einigen Sekunden automatisch wieder ein.

Nach dem Beenden einer Demositzung werden Geräte stummgeschaltet und einige globale Einstellungen werden zurückgesetzt, darunter:

  • Helligkeit
  • Automatische Rotation
  • Taschenlampe
  • Sprache
  • Bedienungshilfen

Demomodus für den Einzelhandel beenden

Wenn Verkäufer den Einzelhandelsmodus beenden möchten, müssen sie dafür sorgen, dass das Demogerät nicht für die Geräteverwaltung registriert ist, und das Gerät über den Bootloader auf die Werkseinstellungen zurücksetzen.