Einzelhandels-Demomodus

Mit Android 7.1.1 wurde die Unterstützung des Einzelhandels-Demomodus auf Systemebene eingeführt, sodass Kunden die Geräte in Einzelhandelsgeschäften in Aktion testen können. Geräte werden mithilfe einer Gerätebesitzer-App für die Einzelhandelsdemo eingerichtet, um sicherzustellen, dass die Gerätenutzung nur auf bestimmte Demomodus-Apps beschränkt ist. Endbenutzer dürfen auf einem Demogerät für den Einzelhandel kein persönliches Konto hinzufügen können. Android 8.1 überarbeitet diese Unterstützung, um Demobenutzer über die DevicePolicyManager createAndManageUser -API zu erstellen. Dies ermöglicht eine viel größere OEM-Anpassung an den Standard-Einzelhandelsmodus in Bezug auf Benutzerverwaltung und Geräterichtlinienverwaltung auf dem Demogerät.

Während DevicePolicyManager- APIs in Versionen vor Android 8.1 verwendet werden können, können Benutzer vom Demotyp ( DevicePolicyManager.MAKE_USER_DEMO ) nicht mit der createAndManageUser -API in Versionen 8.0 und früher 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 in Android 8.1 und höher beschrieben.

Plattformänderungen

Legen Sie DEVICE_DEMO_MODE fest

Geräte, die einen auf dem Gerätebesitzer basierenden Einzelhandels-Demomodus implementieren, müssen Settings.Global.DEVICE_DEMO_MODE vor der Bereitstellung auf 1 setzen, um anzugeben, dass das Gerät für den Einzelhandels-Demomodus bereitgestellt wird. SystemServer verwendet dieses Flag, um Aspekte des Einzelhandelsmodus zu verwalten, wie z. B. Energieprofil und SystemUI.

Aktivieren Sie RetailDemoModeService

Bei Geräten, die einen Einzelhandels-Demomodus implementieren, setzt der Setup-Assistent eine globale Einstellung Global.DEVICE_DEMO_MODE auf „ true , um anzugeben, dass das Gerät in den Einzelhandelsmodus gewechselt ist. Wenn RetailDemoModeService diese Einstellung sieht, erstellt er einen Demobenutzer und wechselt zu diesem, wenn Benutzer 0 gestartet wird, aktiviert den in einer Overlay-Ressource angegebenen benutzerdefinierten Launcher und deaktiviert SUW. System Server und SystemUI verwenden dieses Flag auch, um Aspekte des Einzelhandelsmodus zu verwalten.

Legen Sie einen benutzerdefinierten Launcher oder Videoplayer fest

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 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 Benutzer 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 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 einen Einstieg in den Einzelhandelsmodus zu ermöglichen. SUW kann geändert werden, um nach einem anderen OEM-spezifischen Zeichen dafür zu suchen, dass der Einzelhandelsmodus unterstützt wird, wenn das Video nicht Teil der Demo ist. Wenn System-A/B-Partitionen vorhanden sind, muss die System-B-Partition das Demovideo unter /preloads/demo enthalten. Dies wird beim ersten Start nach /data/preloads/demo kopiert.

Passen Sie vorinstallierte Apps für den Einzelhandels-Demomodus an

Vorinstallierte Apps können ihr Erlebnis für den Einzelhandels-Demomodus anpassen, indem sie die UserManager.isDemoUser() API aufrufen, um zu sehen, ob die App in einer Demoumgebung gestartet wird.

Für den Demobenutzer werden bestimmte Einschränkungen festgelegt, ähnlich wie bei Richtlinien für verwaltete Geräte oder Profile, die verhindern, dass Apps und Benutzer bestimmte Vorgänge ausführen. Eine dieser Einschränkungen ist DISALLOW_MODIFY_ACCOUNTS . Mit dieser Einschränkung erlauben der AccountManager und die Einstellungen das Hinzufügen von Konten nicht. Einige Google-Apps reagieren auf diese Einschränkung und zeigen eine Fehlermeldung an, andere fordern nicht zur Eingabe eines Kontos auf (z. B. YouTube und Fotos). Wir empfehlen, dass OEM-Apps auch prüfen, ob DISALLOW_MODIFY_ACCOUNTS festgelegt ist, und das Szenario entsprechend behandeln.

Systemaktualisierung

Wenn der Einzelhandelsmodus aktiviert ist, ist die Geräterichtlinie standardmäßig auf automatische Over-the-Air-Aktualisierung (OTA) eingestellt. Einzelhandelsgeräte laden das Update herunter, starten es neu und installieren es (unter Berücksichtigung der Batteriegrenzwerte), ohne dass der Benutzer eingreifen muss.

Demo-App für den Einzelhandel

Für die Implementierung des auf dem Gerätebesitzer basierenden Einzelhandels-Demomodus muss eine Device Policy Controller- App als Gerätebesitzer festgelegt werden. Das AOSP enthält eine Referenzimplementierung der RetailDemo-App in /packages/apps/RetailDemo .

Gerätebesitzer-Apps erfordern keine erhöhten Berechtigungen oder eine Vorinstallation auf dem Systemabbild und können während des Einrichtungs- oder Bereitstellungsprozesses heruntergeladen werden. Sie werden größtenteils wie herkömmliche Apps implementiert, mit folgenden Unterschieden:

APIs in der DevicePolicyManager- Klasse ermöglichen es Device Owner (DO) und Profile Owner (PO), verschiedene Geräterichtlinien durchzusetzen. Einige der DevicePolicyManager- Funktionen, die für den Einzelhandels-Demomodus gelten, sind wie folgt aufgeführt.

  • Benutzer erstellen und verwalten.

  • Starte das Gerät neu.

  • Legen Sie für LockTask zulässige Pakete fest.

  • Installieren Sie Pakete über PackageInstaller .

  • Blockieren Sie die Deinstallation von Paketen.

  • Aktivieren Sie automatische Systemaktualisierungen. Geräte laden OTA-Updates automatisch herunter und wenden sie an.

  • Deaktivieren Sie den Tastenschutz.

  • Verhindern Sie das Festlegen von Passwörtern oder Fingerabdrücken.

  • Legen Sie einen Satz von Settings.Global- , Settings.Secure- und Settings.System- Einstellungen auf der Zulassungsliste fest.

  • Legen Sie die Berechtigungsrichtlinie auf PERMISSION_POLICY_AUTO_GRANT fest, wodurch automatisch alle Laufzeitberechtigungen gewährt 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 Benutzer weiterhin pro Benutzer und pro App gewähren müssen.

  • Legen Sie Benutzereinschränkungen fest, die für den Einzelhandelsmodus relevant sind, wie im UserManager definiert, wie folgt.

    • DISALLOW_MODIFY_ACCOUNTS
    • DISALLOW_USB_FILE_TRANSFER
    • DISALLOW_DEBUGGING_FEATURES
    • DISALLOW_CONFIG_WIFI
    • DISALLOW_CONFIG_BLUETOOTH
    • DISALLOW_INSTALL_UNKNOWN_SOURCES
    • DISALLOW_CONFIG_MOBILE_NETWORKS

Aktualisieren Sie das Demovideo über das Internet

Die RetailDemo-App in /packages/apps/RetailDemo bietet die Möglichkeit, das Demovideo zu aktualisieren, wenn eine Netzwerkverbindung besteht. Die URL, von der das Video heruntergeladen werden soll, kann durch Überschreiben des folgenden Zeichenfolgewerts 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 müssen, können unterschiedliche Download-URLs mithilfe gebietsschemaspezifischer Zeichenfolgenressourcen in res/values-*/strings.xml konfiguriert 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 und res/values-en-rGB/strings.xml platziert werden , bzw. wie folgt 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 bei jedem Geräteneustart heruntergeladen. Wenn das Video auf dem Gerät abgespielt wird, prüft die RetailDemo-App im Hintergrund, ob die Download-URL angegeben ist und das Video unter der URL neuer ist als das abgespielte.

Wenn ja, lädt die RetailDemo-App das Video herunter und beginnt mit der Wiedergabe. Sobald das Video heruntergeladen ist, wird es künftig in allen Demositzungen abgespielt. Die Überprüfungen werden erst nach dem nächsten Neustart erneut durchgeführt.

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 vorliegen und dürfen eine beliebige Länge von mehr als fünf Sekunden haben. Inhalte dürfen nicht zum Einbrennen führen, da sie bei der Anzeige ständig abgespielt werden.

Weitere Informationen finden Sie in den Definitionen von Benutzern, Profilen und Konten für Android-Entwickler , in der Dokumentation zur Device Policy Manager-API und in der Beispiel-App für Gerätebesitzer .

Validierung

CTS deckt den Einzelhandels-Demomodus nicht ab, 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-Sitzung

Aufbau einer Demo-Sitzung

Demogeräte für den Einzelhandel starten möglicherweise im Demomodus für den Einzelhandel, wenn sie werkseitig für den Demomodus konfiguriert sind. Alternativ können Einzelhandelsmitarbeiter den Einzelhandelsmodus direkt über den Einrichtungsassistenten aktivieren.

Retail demo mode

Abbildung 2. Demonstrationsmodus für den Einzelhandel

Demositzung anzeigen

Wenn das Gerät in den Einzelhandelsmodus wechselt, wechselt es zu einem neuen Demobenutzer und startet automatisch den benutzerdefinierten Launcher, der in der Overlay-Ressource angegeben ist, wie unter Implementierung beschrieben. Standardmäßig spielt dieser benutzerdefinierte Launcher das Demovideo so lange ab, bis der Benutzer den Bildschirm berührt, um eine Demobenutzersitzung zu starten. Zu diesem Zeitpunkt startet der benutzerdefinierte Launcher den System-Launcher und wird dann beendet. OEMs können den benutzerdefinierten Launcher ändern, um beim Beenden zusätzlich einen anderen Dienst oder eine andere Aktivität zu starten.

Um die Integrität des Einzelhandelsmodus aufrechtzuerhalten, ist der Tastenschutz deaktiviert und bestimmte Aktionen in den Schnelleinstellungen, die sich negativ auf den Einzelhandelsmodus auswirken könnten, sind ebenfalls nicht zulässig, einschließlich der folgenden.

  • Umschalten des Flugmodus.
  • Entfernen oder Ändern von WLAN-Zugangspunkten (Einstellungen).
  • Netzbetreiber wechseln (Einstellungen).
  • Hotspot konfigurieren (Einstellungen).
  • Benutzerwechsel.

Darüber hinaus 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.
  • Sichern & Zurücksetzen, Datum & Uhrzeit und Mobilfunknetze (sie werden überhaupt nicht angezeigt).

Wenn der Benutzer längere Zeit inaktiv ist (standardmäßig 90 Sekunden), zeigt der Einzelhandelsmodus ein Systemdialogfeld an, in dem der Benutzer aufgefordert wird, die Sitzung entweder zu beenden oder fortzufahren. Wenn sich der Benutzer zum Beenden entscheidet oder fünf Sekunden lang keine Antwort erfolgt, entfernt der Einzelhandelsmodus den aktuellen Demobenutzer, wechselt zu einem neuen Demobenutzer und durchläuft das Originalvideo erneut. Wenn der Bildschirm mit der Power-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 die folgenden:

  • Helligkeit
  • Automatische Drehung
  • Taschenlampe
  • Sprache
  • Barrierefreiheit

Beenden Sie den Einzelhandels-Demomodus

Um den Einzelhandelsmodus zu verlassen, müssen Einzelhandelsmitarbeiter sicherstellen, dass das Demogerät nicht bei der Geräteverwaltung registriert ist, und das Gerät über den Bootloader auf die Werkseinstellungen zurücksetzen.