Mit Android 7.1.1 wurde der Demomodus für den Einzelhandel auf Systemebene unterstützt, damit Kunden die Geräte in Geschäften in Aktion sehen können. Geräte werden für den Demomodus im Einzelhandel mit einer App für Geräteeigentümer eingerichtet, damit die Gerätenutzung auf bestimmte Apps im Demomodus beschränkt wird. Endnutzer dürfen auf einem Demogerät im Einzelhandel kein privates Konto hinzufügen können. Unter Android 8.1 wurde diese Unterstützung überarbeitet, um Demonutzer über die DevicePolicyManager-API createAndManageUser zu erstellen. Dies ermöglicht eine deutlich größere OEM-Anpassung des Standard-Einzelhandelsmodus in Bezug auf die Nutzerverwaltung und die Verwaltung von Geräterichtlinien auf dem Demogerät.
Die DevicePolicyManager APIs können zwar in Versionen vor Android 8.1 verwendet werden, aber Nutzer vom Demotyp (DevicePolicyManager.MAKE_USER_DEMO
) können in Version 8.0 und niedriger nicht mit der createAndManageUser API erstellt werden.
Implementierung in Android 8.1 und höher
In diesem Abschnitt werden die Plattformverbesserungen hervorgehoben und die Demo-App für den Einzelhandel unter Android 8.1 und höher beschrieben.
Plattformänderungen
DEVICE_DEMO_MODE festlegen
Bei Geräten mit einem geräteeigentümerbasierten Demomodus für den Einzelhandel muss vor der Bereitstellung Settings.Global.DEVICE_DEMO_MODE
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 wie das Energieprofil und die System-UI zu verwalten.
RetailDemoModeService aktivieren
Auf Geräten mit einem Demomodus für den Einzelhandel legt der Einrichtungsassistent die globale Einstellung Global.DEVICE_DEMO_MODE
auf true
fest, um anzuzeigen, dass sich das Gerät im Demomodus für den Einzelhandel befindet. Wenn diese Einstellung erkannt 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. SystemServer 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
in der Datei config.xml ü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 Android Open Source Project (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 Standardsystem-Launcher gestartet wird.
Die benutzerdefinierte Komponente des benutzerdefinierten Launchers muss standardmäßig deaktiviert sein, damit sie in anderen Szenarien nicht angezeigt wird. Im Demo-Szenario aktiviert der Systemserver die angegebene config_demoModeLauncherComponent
, wenn eine neue Demo-Sitzung gestartet wird.
Der Einrichtungsassistent sucht auch nach dem oben genannten Video, um eine Option zum Wechseln in den Einzelhandelsmodus anzubieten. SUW kann so geändert werden, dass nach einem anderen OEM-spezifischen Zeichen gesucht wird, 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. Diese Datei wird beim ersten Starten in den Ordner /data/preloads/demo kopiert.
Vorinstallierte Apps für den Demomodus für den Einzelhandel anpassen
Bei vorinstallierten Apps kann die Nutzung für den Demomodus für den Einzelhandel angepasst werden. Dazu muss die UserManager.isDemoUser()
API aufgerufen werden, um zu prüfen, ob die App in einer Demoumgebung gestartet wird.
Für den Demonutzer gelten bestimmte Einschränkungen, ähnlich wie bei Richtlinien für verwaltete Geräte oder Profile, die verhindern, dass Apps und Nutzer bestimmte Aktionen ausführen.
Eine dieser Einschränkungen ist DISALLOW_MODIFY_ACCOUNTS
. Aufgrund dieser Einschränkung können über den AccountManager und die Einstellungen keine Konten hinzugefügt werden. Einige Google-Apps reagieren auf diese Einschränkung und zeigen eine Fehlermeldung an. Bei anderen Apps (z. B. YouTube und Google Fotos) werden Sie nicht nach einem Konto gefragt. Wir empfehlen OEM-Apps, auch zu prüfen, ob DISALLOW_MODIFY_ACCOUNTS
festgelegt ist, und das Szenario entsprechend zu behandeln.
Systemupdates
Wenn der Einzelhandelsmodus aktiviert ist, wird die Geräterichtlinie standardmäßig automatisch auf ein Over-the-Air-Update (OTA-Update) festgelegt. Auf Einzelhandelsgeräten wird das Update ohne Nutzerinteraktion heruntergeladen, das Gerät neu gestartet und das Update installiert (unter Berücksichtigung der Akkugrenzwerte).
Demo-App für den Einzelhandel
Für die Implementierung des Demomodus für den Einzelhandel, der auf dem Geräteeigentümer basiert, muss eine Device Policy Controller App als Geräteeigentümer festgelegt werden. Das AOSP enthält eine Referenzimplementierung der App „RetailDemo“ unter /packages/apps/RetailDemo.
Apps für Geräteeigentümer erfordern keine erhöhten Berechtigungen oder Vorinstallation auf dem Systemabbild und können während der Einrichtung oder Bereitstellung heruntergeladen werden. Sie werden meist wie herkömmliche Apps implementiert, mit den folgenden Unterschieden:
Alle Apps des Geräteeigentümers müssen die Komponente DeviceAdminReceiver erweitern, die als Autorisierungstoken für alle DevicePolicyManager APIs dient. Die Komponente muss die Berechtigung
android.permission.BIND_DEVICE_ADMIN
haben, die angeforderten speziellen Richtlinien als Metadaten enthalten und die Intentsandroid.app.action.PROFILE_PROVISIONING_COMPLETE
undandroid.app.action.DEVICE_ADMIN_ENABLED
filtern.Das Flag DevicePolicyManager#MAKE_USER_DEMO, das zum Erstellen spezieller Nutzer des Demotyps festgelegt ist, ist eine ausgeblendete API. Dieses Flag hat den konstanten Wert 0x4.
Die Geräteeigentümerschaft darf nur über den Rolleninhaber für die Geräteverwaltung oder die App Managed Provisioning zugewiesen werden.
Mithilfe der APIs der Klasse DevicePolicyManager können Geräteeigentümer (Device Owner, DO) und Profilinhaber (Profile Owner, PO) verschiedene Geräterichtlinien erzwingen. Im Folgenden sind einige der DevicePolicyManager-Funktionen aufgeführt, die für den Demomodus für den Einzelhandel gelten.
Nutzer erstellen und verwalten.
Starten Sie das Gerät neu.
Zulässige Pakete für LockTask festlegen
Pakete über PackageInstaller installieren
Blockieren, dass Pakete deinstalliert werden.
Aktivieren Sie automatische Systemupdates. OTA-Updates werden automatisch auf den Geräten heruntergeladen und angewendet.
Deaktivieren Sie den Keyguard.
Verhindern, dass Passwörter oder Fingerabdrücke festgelegt werden
Legen Sie eine Zulassungsliste für die Einstellungen Settings.Global, Settings.Secure und Settings.System fest.
Legen Sie die Berechtigungsrichtlinie auf
PERMISSION_POLICY_AUTO_GRANT
fest, um automatisch alle Laufzeitberechtigungen zu gewähren. Berechtigungen können auch eingeschränkter gewährt werden: eine einzelne Berechtigung für eine einzelne App. Dies gilt nicht für App-Betriebsberechtigungen, die Nutzer weiterhin pro Nutzer und App gewähren müssen.Legen Sie die für den Einzelhandelsmodus relevanten Nutzereinschränkungen wie in UserManager definiert 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 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 Sie den folgenden Stringwert in der RetailDemo App überschreiben.
<!-- 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 Sie mithilfe von länderspezifischen Stringressourcen in res/values-*/strings.xml unterschiedliche Download-URLs konfigurieren. Wenn beispielsweise in den USA und in Großbritannien unterschiedliche Videos verwendet werden müssen, können die entsprechenden Download-URLs in res/values-en-rUS/strings.xml und 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 nach jedem Neustart des Geräts höchstens einmal 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 an der URL neuer ist als das wiedergegebene.
In diesem Fall lädt die RetailDemo App das Video herunter und startet die Wiedergabe. Nach dem Herunterladen wird das Video in allen zukünftigen Demo-Sitzungen wiedergegeben. Keine der Prüfungen wird vor dem nächsten Neustart wiederholt.
Richtlinien für Demovideos
Demovideos müssen im Hochformat oder, bei Tablets, in der natürlichen Ausrichtung des Geräts sein. Sie können eine beliebige Länge haben, die länger als fünf Sekunden ist. Die Inhalte dürfen keine Einbrennen verursachen, da sie ständig auf dem Display angezeigt 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 Demomodus für den Einzelhandel wird vom CTS nicht abgedeckt, 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
Demo-Sitzung einrichten
Demogeräte für den Einzelhandel können im Demomodus für den Einzelhandel starten, wenn sie ab Werk für den Demomodus konfiguriert wurden. Alternativ können Einzelhandelsmitarbeiter 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, wechselt es zu einem neuen Demonutzer und startet automatisch den in der Overlay-Ressource angegebenen benutzerdefinierten Launcher, wie unter Implementierung beschrieben. Standardmäßig wiederholt dieser benutzerdefinierte Launcher das Demovideo, 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. 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 wahren, ist der Sperrbildschirm deaktiviert und bestimmte Aktionen in den Schnelleinstellungen, die sich negativ auf den Einzelhandelsmodus auswirken könnten, sind ebenfalls nicht zulässig. Dazu gehören:
- Ein-/Aus-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
- „Daten sichern und zurücksetzen“, „Datum und Uhrzeit“ und „Mobilfunknetze“ (werden gar nicht angezeigt).
Wenn der Nutzer eine gewisse Zeit 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 das Video schließt oder fünf Sekunden lang keine Reaktion erfolgt, wird der aktuelle Demonutzer entfernt, der Demomodus wechselt zu einem neuen Demonutzer und das ursprüngliche Video wird noch einmal abgespielt. 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 die Geräte stummgeschaltet und einige globale Einstellungen zurückgesetzt, darunter:
- 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 für die Geräteverwaltung registriert ist, und es über den Bootloader auf die Werkseinstellungen zurücksetzen.