W systemie Android 7.1.1 wprowadzono obsługę na poziomie systemu detalicznego trybu demonstracyjnego, dzięki czemu klienci mogą sprawdzić urządzenia w działaniu w sklepach detalicznych. Urządzenia są konfigurowane do wersji demonstracyjnej w wersji detalicznej za pomocą aplikacji właściciela urządzenia, aby mieć pewność, że korzystanie z urządzenia jest ograniczone tylko do niektórych aplikacji w trybie demonstracyjnym. Użytkownicy końcowi nie mogą mieć możliwości dodania konta osobistego na urządzeniu demonstracyjnym do sprzedaży detalicznej. W systemie Android 8.1 zmieniono tę obsługę, aby utworzyć użytkowników demonstracyjnych za pośrednictwem interfejsu API DevicePolicyManager createAndManageUser . Umożliwia to znacznie większe dostosowanie OEM do standardowego trybu sprzedaży detalicznej w zakresie zarządzania użytkownikami i zarządzania polityką urządzenia na urządzeniu demonstracyjnym.
Chociaż interfejsów API DevicePolicyManager można używać w wersjach wcześniejszych niż Android 8.1, użytkowników typu demonstracyjnego ( DevicePolicyManager.MAKE_USER_DEMO
) nie można tworzyć za pomocą interfejsu API createAndManageUser w wersjach 8.0 i wcześniejszych.
Implementacja w systemie Android 8.1 i nowszych
W tej sekcji omówiono ulepszenia platformy i opisano aplikację demonstracyjną dla handlu detalicznego w systemie Android 8.1 i nowszych wersjach.
Zmiany na platformie
Ustaw DEVICE_DEMO_MODE
Urządzenia wdrażające detaliczny tryb demonstracyjny oparty na właścicielu urządzenia muszą ustawić Settings.Global.DEVICE_DEMO_MODE
na 1 przed udostępnieniem, aby wskazać, że urządzenie jest udostępniane w detalicznym trybie demonstracyjnym. SystemServer używa tej flagi do zarządzania aspektami trybu detalicznego, takimi jak profil zasilania i SystemUI.
Włącz usługę RetailDemoModeService
W przypadku urządzeń wdrażających detaliczny tryb demonstracyjny kreator konfiguracji ustawia ustawienie globalne Global.DEVICE_DEMO_MODE
na true
, aby wskazać, że urządzenie przeszło w tryb detaliczny. Po zobaczeniu tego ustawienia usługa RetailDemoModeService tworzy użytkownika demonstracyjnego i przełącza się na niego po uruchomieniu użytkownika 0, włącza niestandardowy program uruchamiający określony w zasobie nakładki i wyłącza SUW. Serwer systemowy i SystemUI również używają tej flagi do zarządzania aspektami trybu detalicznego.
Ustaw niestandardowy program uruchamiający lub odtwarzacz wideo
Producenci urządzeń mogą określić niestandardowy program uruchamiający, zastępując zasób platformy config_demoModeLauncherComponent
określony w pliku config.xml w następujący sposób.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
Detaliczna wersja demonstracyjna DemoPlayer znajdująca się w /packages/apps/RetailDemo jest domyślnym niestandardowym programem uruchamiającym w projekcie Android Open Source Project (AOSP). Aplikacja wyszukuje wideo na partycji urządzenia, takiej jak /data/preloads/demo/retail_demo.mp4 i odtwarza je w pętli. Gdy użytkownik dotknie ekranu, niestandardowy program uruchamiający wyłącza swój komponent aktywności, co powoduje uruchomienie domyślnego programu uruchamiającego system.
Niestandardowy program uruchamiający musi mieć domyślnie oznaczony komponent niestandardowy jako wyłączony, aby nie był wyświetlany w scenariuszach innych niż demo. W scenariuszu demonstracyjnym serwer System Server włącza określony config_demoModeLauncherComponent
podczas rozpoczynania nowej sesji demonstracyjnej.
Kreator konfiguracji wyszukuje również wspomniany wcześniej film, aby umożliwić przejście do trybu sprzedaży detalicznej. SUW można zmodyfikować w celu wyszukania innego znaku specyficznego dla OEM, wskazującego, że tryb detaliczny jest obsługiwany, jeśli wideo nie jest częścią wersji demonstracyjnej. Jeśli istnieją partycje systemowe A/B, partycja systemowa B musi zawierać wideo demonstracyjne w katalogu /preloads/demo. Zostanie to skopiowane do /data/preloads/demo przy pierwszym uruchomieniu.
Dostosuj wstępnie załadowane aplikacje do trybu demonstracyjnego w handlu detalicznym
Fabrycznie załadowane aplikacje mogą dostosować swoje środowisko do trybu demonstracyjnego w handlu detalicznym, wywołując interfejs API UserManager.isDemoUser()
w celu sprawdzenia, czy aplikacja jest uruchamiana w środowisku demonstracyjnym.
W przypadku użytkownika demonstracyjnego ustawione są pewne ograniczenia, podobne do zasad zarządzanego urządzenia lub profilu, które uniemożliwiają aplikacjom i użytkownikom wykonywanie określonych operacji. Jednym z tych ograniczeń jest DISALLOW_MODIFY_ACCOUNTS
. W przypadku tego ograniczenia Menedżer kont i Ustawienia nie pozwalają na dodawanie kont. Niektóre aplikacje Google reagują na to ograniczenie i wyświetlają komunikat o błędzie, a inne nie wyświetlają monitu o założenie konta (np. YouTube i Zdjęcia). Zalecamy, aby aplikacje OEM sprawdzały również, czy ustawiono DISALLOW_MODIFY_ACCOUNTS
i odpowiednio obsługiwały scenariusz.
Aktualizacje systemu
Domyślnie, gdy tryb sprzedaży detalicznej jest włączony, zasady dotyczące urządzeń są ustawione na automatyczną aktualizację bezprzewodową (OTA). Urządzenia detaliczne pobiorą, uruchomią ponownie i zainstalują aktualizację (z uwzględnieniem progów baterii) bez interakcji użytkownika.
Aplikacja demonstracyjna sprzedaży detalicznej
Implementacja trybu demonstracyjnego w handlu detalicznym na podstawie właściciela urządzenia wymaga ustawienia aplikacji Device Policy Controller jako właściciela urządzenia. AOSP zawiera referencyjną implementację aplikacji RetailDemo w /packages/apps/RetailDemo .
Aplikacje właściciela urządzenia nie wymagają podwyższonych uprawnień ani wstępnej instalacji w obrazie systemu i można je pobrać podczas procesu konfiguracji lub udostępniania. Są one przeważnie wdrażane jak tradycyjne aplikacje, z następującymi różnicami:
Wszystkie aplikacje właścicieli urządzeń muszą rozszerzać komponent DeviceAdminReceiver , który służy jako token autoryzacji dla wszystkich interfejsów API DevicePolicyManager . Komponent musi posiadać uprawnienia
android.permission.BIND_DEVICE_ADMIN
, zawierać żądane zasady specjalne jako metadane i filtrować intencjeandroid.app.action.PROFILE_PROVISIONING_COMPLETE
iandroid.app.action.DEVICE_ADMIN_ENABLED
.Flaga DevicePolicyManager#MAKE_USER_DEMO , która jest ustawiona w celu tworzenia specjalnych użytkowników typu demo, jest ukrytym API. Flaga ta ma wartość stałą 0x4.
Własność urządzenia można przypisać wyłącznie za pośrednictwem posiadacza roli zarządzania urządzeniami lub aplikacji ManagedProvisioning .
Interfejsy API w klasie DevicePolicyManager umożliwiają właścicielowi urządzenia (DO) i właścicielowi profilu (PO) egzekwowanie różnych zasad dotyczących urządzeń. Niektóre funkcje DevicePolicyManager mające zastosowanie w trybie demonstracyjnym w handlu detalicznym są wymienione poniżej.
Twórz użytkowników i zarządzaj nimi.
Uruchom ponownie urządzenie.
Ustaw dozwolone pakiety LockTask.
Zainstaluj pakiety za pomocą PackageInstaller .
Zablokuj możliwość odinstalowania pakietów.
Włącz automatyczne aktualizacje systemu. Urządzenia automatycznie pobiorą i zastosują aktualizacje OTA.
Wyłącz klawiaturę.
Zapobiegaj ustawianiu haseł i odcisków palców.
Ustaw dozwolony zestaw ustawień.Globalne , Ustawienia.Bezpieczne i Ustawienia.Ustawienia systemowe .
Ustaw politykę uprawnień na
PERMISSION_POLICY_AUTO_GRANT
, która automatycznie przyznaje wszystkie uprawnienia wykonawcze. Uprawnienia można również nadawać w węższy sposób: pojedyncze pozwolenie na pojedynczą aplikację. Nie dotyczy to uprawnień związanych z aplikacjami, które użytkownicy muszą nadal przyznawać indywidualnie dla każdego użytkownika i dla każdej aplikacji.Ustaw ograniczenia użytkownika dotyczące trybu sprzedaży detalicznej zgodnie z definicją w UserManager w następujący sposób.
-
DISALLOW_MODIFY_ACCOUNTS
-
DISALLOW_USB_FILE_TRANSFER
-
DISALLOW_DEBUGGING_FEATURES
-
DISALLOW_CONFIG_WIFI
-
DISALLOW_CONFIG_BLUETOOTH
-
DISALLOW_INSTALL_UNKNOWN_SOURCES
-
DISALLOW_CONFIG_MOBILE_NETWORKS
-
Zaktualizuj film demonstracyjny za pomocą Internetu
Aplikacja RetailDemo w katalogu /packages/apps/RetailDemo umożliwia aktualizację wideo demonstracyjnego, jeśli dostępna jest łączność sieciowa. Adres URL, z którego można pobrać wideo, można skonfigurować, zastępując następującą wartość ciągu w aplikacji RetailDemo.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
Jeśli w różnych regionach muszą być używane różne filmy, można skonfigurować różne adresy URL pobierania, korzystając z zasobów ciągów specyficznych dla ustawień regionalnych w pliku res/values-*/strings.xml . Na przykład, jeśli w Stanach Zjednoczonych i Wielkiej Brytanii mają być używane różne filmy, odpowiednie adresy URL pobierania można umieścić w plikach res/values-en-rUS/strings.xml i res/values-en-rGB/strings.xml odpowiednio pokazano w następujący sposób.
W pliku res/values-en-rUS/strings.xml:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
W res/values-en-rGB/strings.xml:
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
Ten film jest pobierany najwyżej raz przy każdym ponownym uruchomieniu urządzenia. Podczas odtwarzania wideo na urządzeniu aplikacja RetailDemo sprawdza w tle, czy podany jest adres URL pobierania i czy wideo pod tym adresem jest nowsze niż odtwarzane.
Jeśli tak, aplikacja RetailDemo pobierze i rozpocznie odtwarzanie wideo. Po pobraniu film będzie używany do odtwarzania we wszystkich kolejnych sesjach demonstracyjnych. Żadna z kontroli nie zostanie powtórzona aż do następnego ponownego uruchomienia.
Wytyczne dotyczące filmów demonstracyjnych
Filmy demonstracyjne muszą być w układzie pionowym lub, w przypadku tabletu, w naturalnej orientacji urządzenia i mogą mieć dowolną długość przekraczającą pięć sekund. Treść nie może powodować wypalenia, ponieważ będzie odtwarzana w sposób ciągły podczas wyświetlania.
Więcej informacji znajdziesz w definicjach użytkowników, profili i kont dla programistów Androida , dokumentacji interfejsu API Menedżera zasad urządzeń i przykładowej aplikacji właściciela urządzenia .
Walidacja
CTS nie obejmuje trybu demonstracyjnego w handlu detalicznym, ponieważ jest to funkcja opcjonalna. Testowanie należy przeprowadzić ręcznie lub za pomocą testów jednostkowych dla aplikacji demonstracyjnej.
Sesja demonstracyjna
Konfiguracja sesji demonstracyjnej
Urządzenia demonstracyjne do sprzedaży detalicznej mogą uruchomić się w trybie demonstracyjnym do sprzedaży detalicznej, jeśli są fabrycznie skonfigurowane do trybu demonstracyjnego. Alternatywnie pracownicy sprzedaży detalicznej mogą włączyć tryb sprzedaży detalicznej bezpośrednio z kreatora konfiguracji.
Rysunek 2. Tryb demonstracyjny w handlu detalicznym
Wyświetl sesję demonstracyjną
Gdy urządzenie przejdzie w tryb detaliczny, przełącza się na nowego użytkownika demonstracyjnego i automatycznie uruchamia niestandardowy program uruchamiający określony w zasobie nakładki, zgodnie z opisem w części Implementacja . Domyślnie ten niestandardowy program uruchamiający odtwarza wideo demonstracyjne, dopóki użytkownik nie dotknie ekranu, aby rozpocząć sesję demonstracyjną. W tym momencie niestandardowy program uruchamiający uruchamia program uruchamiający system, a następnie kończy działanie. Producenci OEM mogą zmienić niestandardowy program uruchamiający, aby dodatkowo uruchamiać inną usługę lub działanie przy wyjściu.
Aby zachować integralność trybu detalicznego, blokada klawiatury jest wyłączona, a niektóre działania w Szybkich ustawieniach, które mogłyby niekorzystnie wpłynąć na tryb detaliczny, są również niedozwolone, w tym poniższe.
- Przełącznik trybu samolotowego.
- Usuwanie lub modyfikowanie punktów dostępu Wi-Fi (Ustawienia).
- Zmiana operatora (Ustawienia).
- Konfiguracja hotspotu (Ustawienia).
- Przełączanie użytkowników.
Dodatkowo zablokowany jest także dostęp do niektórych ustawień globalnych, które mogą mieć wpływ na tryb sprzedaży detalicznej poprzez wyłączenie następujących opcji:
- Ustawienia wifi.
- Opcje konfiguracji sieci komórkowej, zwłaszcza hotspotów.
- Konfiguracja Bluetooth.
- Kopia zapasowa i resetowanie, Data i godzina oraz Sieci komórkowe (w ogóle się nie wyświetlają).
Jeśli użytkownik jest bezczynny przez pewien okres czasu (domyślnie 90 sekund), w trybie sprzedaży detalicznej wyświetlane jest systemowe okno dialogowe z monitem o zakończenie sesji lub kontynuowanie. Jeśli użytkownik zdecyduje się wyjść lub jeśli nie będzie odpowiedzi przez pięć sekund, tryb detaliczny usunie bieżącego użytkownika demonstracyjnego, przełączy się na nowego użytkownika demonstracyjnego i ponownie odtworzy oryginalny film. Jeśli ekran zostanie wyłączony przyciskiem zasilania, po kilku sekundach włączy się automatycznie.
Po wyjściu z sesji demonstracyjnej urządzenia wyciszają się i resetują niektóre ustawienia globalne, w tym następujące:
- Jasność
- Automatyczne obracanie
- Latarka
- Język
- Dostępność
Wyjdź z trybu demonstracyjnego sprzedaży detalicznej
Aby wyjść z trybu sprzedaży detalicznej, pracownicy sprzedaży detalicznej muszą upewnić się, że urządzenie demonstracyjne nie jest zarejestrowane w ramach zarządzania urządzeniami, i zresetować urządzenie do ustawień fabrycznych za pomocą programu rozruchowego.