Mit Android 7.1.1 wurde eine Unterstützung auf Systemebene für den Demomodus für den Einzelhandel eingeführt, damit Kunden die Geräte in Aktion in Geschäften im Einzelhandel testen können. Die Geräte sind für den Demomodus für den Einzelhandel mit einer Geräteeigentümer-App eingerichtet, um sicherzustellen, dass die Gerätenutzung auf bestimmte Apps im Demomodus beschränkt ist. Endnutzer dürfen einem Demogerät für den Einzelhandel kein privates Konto hinzufügen. Android 8.1 überarbeitet diese Unterstützung, um Demonutzer über die DevicePolicyManager API createAndManageUser zu erstellen. Dies ermöglicht eine wesentlich größere OEM-Anpassung des Standard-Einzelhandelsmodus in Bezug auf die Nutzerverwaltung und die Verwaltung von Geräterichtlinien auf dem Demogerät.
DevicePolicyManager-APIs können zwar in Versionen vor Android 8.1 verwendet werden, Nutzer vom Typ demo-type (DevicePolicyManager.MAKE_USER_DEMO
) können jedoch in Version 8.0 und früheren Versionen nicht mit der createAndManageUser API erstellt werden.
Implementierung in Android 8.1 und höher
In diesem Abschnitt werden die Plattformverbesserungen beschrieben und die Demo-App für den Einzelhandel in Android 8.1 und höher beschrieben.
Plattformänderungen
DEVICE_DEMO_MODE festlegen
Bei Geräten, die einen 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 System-UI.
RetailDemoModeService aktivieren
Auf Geräten, auf denen ein Demomodus für den Einzelhandel implementiert wird, legt der Einrichtungsassistent die globale Einstellung Global.DEVICE_DEMO_MODE
auf true
fest, um anzugeben, dass das Gerät in den Demomodus für den Einzelhandel wechselt. 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 Demoszenario aktiviert der Systemserver die angegebene config_demoModeLauncherComponent
, wenn eine neue Demo-Sitzung gestartet wird.
Der Einrichtungsassistent sucht auch nach dem zuvor erwähnten Video, um Ihnen die Möglichkeit zu bieten, in den Demomodus zu wechseln. SUW kann geändert werden, um nach anderen OEM-spezifischen Anzeichen dafür zu suchen, dass der Einzelhandelsmodus unterstützt wird, wenn das Video nicht Teil der Demo ist. Wenn es System-A/B-Partitionen gibt, muss diese das Demovideo unter /preloads/demo enthalten. Diese wird beim ersten Start nach /data/preloads/demo kopiert.
Vorinstallierte Apps für den Demomodus für den Einzelhandel anpassen
Vorinstallierte Apps können für den Demomodus für den Einzelhandel angepasst werden. Dazu rufen Sie die UserManager.isDemoUser()
API auf, um zu prüfen, ob die App in einer Demoumgebung gestartet wird.
Für den Demonutzer werden bestimmte Einschränkungen festgelegt, ähnlich wie bei Richtlinien für verwaltete Geräte oder Profile, die Apps und Nutzer daran hindern, bestimmte Vorgänge auszuführen.
Eine dieser Einschränkungen ist DISALLOW_MODIFY_ACCOUNTS
. Bei dieser Einschränkung ist das Hinzufügen von Konten im AccountManager und in den Einstellungen nicht möglich. Einige Google-Apps reagieren auf diese Einschränkung und zeigen eine Fehlermeldung an, während andere nicht zur Eingabe eines Kontos aufgefordert werden (z. B. YouTube und Fotos). 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 Geräten im Einzelhandel werden Updates 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 Geräteeigentümer muss eine Device Policy Controller-App als Geräteeigentümer festgelegt werden. Der AOSP enthält unter /packages/apps/RetailDemo eine RetailDemo-Referenzimplementierung.
Apps von Geräteeigentümern benötigen keine erhöhten Berechtigungen und müssen nicht vorab im System-Image installiert werden. Sie können während des Einrichtungs- oder Bereitstellungsprozesses heruntergeladen werden. Sie werden meist wie herkömmliche Apps implementiert, mit den folgenden Unterschieden:
Alle Apps von Geräteeigentümern 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 mit Demotyp verwendet wird, ist eine versteckte API. Dieses Flag hat den konstanten Wert 0x4.
Die Geräteinhaberschaft darf nur über den Inhaber der Rolle zur Geräteverwaltung oder die App ManagedProvisioning 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
Deinstallation von Paketen blockieren.
Aktivieren Sie automatische Systemupdates. OTA-Updates werden automatisch auf den Geräten heruntergeladen und angewendet.
Deaktivieren Sie den Keyguard.
Festlegen von Passwörtern oder Fingerabdrücken verhindern.
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 enger gefasst werden: eine einzige Berechtigung für eine einzelne App. Dies gilt nicht für App-Operations-Berechtigungen, die Nutzer dennoch 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 in /packages/apps/RetailDemo kann das Demovideo aktualisieren, wenn eine Netzwerkverbindung besteht. Sie können die URL zum Herunterladen des Videos konfigurieren, 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 verschiedene Videos in verschiedenen Regionen verwendet werden müssen, können unterschiedliche Download-URLs mithilfe von gebietsspezifischen String-Ressourcen in res/values-*/strings.xml konfiguriert werden. Wenn beispielsweise unterschiedliche Videos in den USA und in Großbritannien verwendet werden müssen, können die entsprechenden Download-URLs in res/values-en-rUS/strings.xml bzw. res/values-en-rGB/strings.xml platziert werden, wie im Folgenden dargestellt.
In res/values-en-rUS/strings.xml:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
Gehen Sie in res/values-en-rGB/strings.xml so vor:
<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 unter 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 Demositzungen wiedergegeben. Bis zum nächsten Neustart wird keine Überprüfung 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 nicht zu einem Einbrennen führen, da sie fortlaufend abgespielt 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 von CTS nicht abgedeckt, da er eine optionale Funktion ist. Die Tests müssen manuell oder mit Einheitentests für die Demo-App durchgeführt werden.
Demositzung
Einrichtung der Demositzung
Demogeräte für den Einzelhandel starten möglicherweise im Demomodus für den Einzelhandel, wenn sie werkseitig für den Demomodus konfiguriert wurden. Alternativ können Einzelhandelsmitarbeiter den Einzelhandelsmodus direkt über den Einrichtungsassistenten aktivieren.
Abbildung 2. Demomodus für Einzelhandel
Demositzung anzeigen
Wenn das Gerät in den Demomodus wechselt, wechselt es zu einem neuen Demonutzer und startet automatisch den in der Overlay-Ressource angegebenen benutzerdefinierten Launcher, wie unter Implementierung beschrieben. Standardmäßig spielt dieser benutzerdefinierte Launcher das Demovideo so lange wiederholt ab, bis der Nutzer den Bildschirm berührt, um eine Demo-Nutzersitzung 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 aufrechtzuerhalten, ist Keyguard deaktiviert. Bestimmte Aktionen in den Schnelleinstellungen, die sich negativ auf den Demomodus auswirken könnten, sind ebenfalls nicht zulässig. Dazu gehören die folgenden.
- Ein/Aus-Schaltfläche für den Flugmodus.
- WLAN-Zugangspunkte entfernen oder ändern (Einstellungen).
- Mobilfunkanbieter wird gewechselt (Einstellungen).
- Hotspot wird konfiguriert (Einstellungen).
- Nutzerwechsel
Außerdem wird der Zugriff auf einige globale Einstellungen blockiert, die sich auf den Einzelhandelsmodus auswirken können. Dazu werden folgende Einstellungen deaktiviert:
- WLAN-Einstellungen.
- Konfigurationsoptionen für Mobilfunknetze, insbesondere Hotspots
- Bluetooth-Konfiguration
- Sichern & Zurücksetzen, Datum & Uhrzeit und Mobilfunknetze (diese werden nicht angezeigt).
Wenn der Nutzer eine Zeit lang 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 sich der Nutzer entscheidet, den Demomodus zu beenden oder fünf Sekunden lang keine Antwort erfolgt, wird der aktuelle Demonutzer entfernt, der Demonutzer wechselt zu einem neuen Demonutzer und durchläuft das ursprüngliche Video noch einmal. Wenn der Bildschirm über die Ein-/Aus-Taste ausgeschaltet wird, schaltet er sich nach einigen Sekunden automatisch wieder ein.
Nach dem Beenden einer Demositzung schalten sich die Geräte selbst stumm und setzen einige globale Einstellungen zurück, darunter:
- Helligkeit
- Automatische Drehung
- Taschenlampe
- Sprache
- Bedienungshilfen
Demomodus für Einzelhandel beenden
Um den Einzelhandelsmodus zu verlassen, müssen Mitarbeiter im Einzelhandel darauf achten, dass das Demogerät nicht in der Geräteverwaltung registriert ist, und das Gerät über den Bootloader auf die Werkseinstellungen zurücksetzen.