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:
Alle Geräteinhaber-Apps müssen die DeviceAdminReceiver -Komponente erweitern, die als Autorisierungstoken für alle DevicePolicyManager -APIs dient. Die Komponente muss die
android.permission.BIND_DEVICE_ADMINBerechtigung haben, die angeforderten speziellen Richtlinien als Metadaten enthalten und dieandroid.app.action.PROFILE_PROVISIONING_COMPLETEundandroid.app.action.DEVICE_ADMIN_ENABLEDIntents filtern.Das Flag DevicePolicyManager#MAKE_USER_DEMO, das zum Erstellen spezieller Nutzer vom Typ „Demo“ festgelegt wird, ist eine verborgene API. Dieses Flag hat den konstanten Wert 0x4.
Die Geräteinhaberschaft darf nur über den Inhaber der Rolle „Geräteverwaltung“ oder die ManagedProvisioning App zugewiesen werden.
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_GRANTsetzen, 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_ACCOUNTSDISALLOW_USB_FILE_TRANSFERDISALLOW_DEBUGGING_FEATURESDISALLOW_CONFIG_WIFIDISALLOW_CONFIG_BLUETOOTHDISALLOW_INSTALL_UNKNOWN_SOURCESDISALLOW_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.

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.