Detaliczny tryb demonstracyjny

W systemie Android 7.1.1 wprowadzono obsługę trybu demonstracyjnego na poziomie systemu, aby klienci mogli sprawdzić urządzenia w akcji w sklepach detalicznych. Urządzenia są konfigurowane do detalicznej wersji demonstracyjnej 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 detalicznym urządzeniu demonstracyjnym. Android 8.1 poprawia tę obsługę, aby tworzyć użytkowników demonstracyjnych za pośrednictwem interfejsu API DevicePolicyManager createAndManageUser . Pozwala to na znacznie większe dostosowanie OEM do standardowego trybu detalicznego w zakresie zarządzania użytkownikami i zarządzania zasadami dotyczącymi urządzeń na urządzeniu demonstracyjnym.

Chociaż interfejsów API DevicePolicyManager można używać w wersjach wcześniejszych niż Android 8.1, użytkowników demonstracyjnych ( 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.

Zmiany platformy

Ustaw DEVICE_DEMO_MODE

Urządzenia implementujące detaliczny tryb demonstracyjny oparty na właścicielu urządzenia muszą ustawić Settings.Global.DEVICE_DEMO_MODE na 1 przed obsługą administracyjną, aby wskazać, że urządzenie jest obsługiwane w detalicznym trybie demonstracyjnym. SystemServer używa tej flagi do zarządzania aspektami trybu detalicznego, takimi jak profil zasilania i SystemUI.

Włącz RetailDemoModeService

W przypadku urządzeń wdrażających detaliczny tryb demonstracyjny kreator konfiguracji ustawia ustawienie globalne Global.DEVICE_DEMO_MODE na wartość true , aby wskazać, że urządzenie przeszło w tryb detaliczny. Po wyświetleniu tego ustawienia RetailDemoModeService tworzy użytkownika demonstracyjnego i przełącza się do niego po uruchomieniu użytkownika 0, włącza niestandardowy program uruchamiający określony w zasobie nakładki i wyłącza SUW. System Server 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 struktury 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>

Aplikacja demo DemoPlayer dla handlu detalicznego, znajdująca się pod adresem /packages/apps/RetailDemo , jest domyślnym niestandardowym programem uruchamiającym w projekcie Android Open Source Project (AOSP). Aplikacja szuka 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 niestandardowy składnik jako wyłączony, aby nie był wyświetlany w scenariuszach innych niż demonstracyjne. W scenariuszu demonstracyjnym System Server włącza określony config_demoModeLauncherComponent podczas rozpoczynania nowej sesji demonstracyjnej.

Kreator konfiguracji wyszukuje również wspomniane wcześniej wideo, aby zapewnić dostęp do trybu sprzedaży detalicznej. SUW można zmodyfikować, aby wyszukać inny znak specyficzny dla OEM, ż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

Wstępnie załadowane aplikacje mogą dostosować swoje działanie w trybie demonstracyjnym, 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 . Z tym ograniczeniem AccountManager 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 proszą o założenie konta (np. YouTube i Zdjęcia). Zalecamy, aby aplikacje OEM również sprawdzały, czy ustawiono DISALLOW_MODIFY_ACCOUNTS i odpowiednio obsłużyły scenariusz.

Aktualizacje systemu

Domyślnie, gdy włączony jest tryb detaliczny, zasady dotyczące urządzeń są automatycznie aktualizowane przez sieć bezprzewodową (OTA). Urządzenia dostępne w sprzedaży detalicznej pobiorą, zrestartują i zainstalują aktualizację (z uwzględnieniem progów baterii) bez interakcji użytkownika.

Detaliczna aplikacja demonstracyjna

Implementacja detalicznego trybu demonstracyjnego opartego na właścicielu 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 obrazu systemu i można je pobrać podczas procesu konfiguracji lub udostępniania. Są one w większości implementowane jak tradycyjne aplikacje, z następującymi różnicami:

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ń. Poniżej wymieniono niektóre funkcje DevicePolicyManager mające zastosowanie w trybie demonstracyjnym.

  • Twórz użytkowników i zarządzaj nimi.

  • Uruchom ponownie urządzenie.

  • Ustaw dozwolone pakiety LockTask.

  • Zainstaluj pakiety za pomocą PackageInstaller .

  • Zablokuj odinstalowanie pakietów.

  • Włącz automatyczne aktualizacje systemu. Urządzenia automatycznie pobiorą i zastosują aktualizacje OTA.

  • Wyłącz blokadę klawiatury.

  • Zapobiegaj ustawianiu haseł lub odcisków palców.

  • Ustaw zestaw ustawień z listy dozwolonych Settings.Global , Settings.Secure i Settings.System .

  • Ustaw zasady uprawnień na PERMISSION_POLICY_AUTO_GRANT , które automatycznie przyznają wszystkie uprawnienia w czasie wykonywania. Uprawnienia można również nadawać w węższym zakresie: pojedyncze uprawnienie do pojedynczej aplikacji. Nie dotyczy to uprawnień związanych z operacjami aplikacji, które użytkownicy nadal muszą przyznawać dla poszczególnych użytkowników i 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 wideo demonstracyjne za pomocą Internetu

Aplikacja RetailDemo w /packages/apps/RetailDemo ma możliwość aktualizacji wideo demonstracyjnego, jeśli istnieje połączenie sieciowe. Adres URL, z którego ma zostać pobrany plik 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 różne filmy muszą być używane w różnych regionach, różne adresy URL pobierania można skonfigurować przy użyciu 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 trzeba użyć różnych filmów, 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 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 maksymalnie raz przy każdym ponownym uruchomieniu urządzenia. Gdy wideo na urządzeniu jest odtwarzane, aplikacja RetailDemo sprawdza w tle, czy podano adres URL pobierania, a wideo pod adresem URL jest nowsze niż odtwarzane.

Jeśli tak, aplikacja RetailDemo zostanie pobrana i rozpocznie odtwarzanie wideo. Po pobraniu wideo jest ono używane do odtwarzania we wszystkich przyszłych sesjach demonstracyjnych. Żadna z kontroli nie powtarza się aż do następnego ponownego uruchomienia.

Wskazówki 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ść dłuższą niż pięć sekund. Treści nie mogą powodować wypalenia, ponieważ będą odtwarzane stale podczas wyświetlania.

Aby uzyskać więcej informacji, zapoznaj się z definicjami użytkowników, profili i kont programisty Androida , dokumentacją interfejsu API Device Policy Manager i przykładową aplikacją Device Owner .

Walidacja

CTS nie obejmuje detalicznego trybu demonstracyjnego, 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

Detaliczne urządzenia demonstracyjne mogą uruchamiać się w detalicznym trybie demonstracyjnym, jeśli są skonfigurowane fabrycznie do trybu demonstracyjnego. Alternatywnie pracownicy handlu detalicznego mogą włączyć tryb detaliczny bezpośrednio z poziomu kreatora konfiguracji.

Retail demo mode

Rysunek 2. Tryb demonstracyjny w handlu detalicznym

Wyświetl sesję demonstracyjną

Gdy urządzenie przechodzi w tryb sprzedaży detalicznej, 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 sekcji Implementacja . Domyślnie ten niestandardowy program uruchamiający odtwarza wideo demonstracyjne w kółko, dopóki użytkownik nie dotknie ekranu, aby rozpocząć sesję użytkownika demonstracyjnego. W tym czasie 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 uruchomić 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ą niekorzystnie wpłynąć na tryb detaliczny, są również niedozwolone, w tym następujące.

  • Przełącznik trybu samolotowego.
  • Usuwanie lub modyfikowanie punktów dostępu Wi-Fi (Ustawienia).
  • Zmiana operatora (Ustawienia).
  • Konfigurowanie hotspotu (Ustawienia).
  • Przełączanie użytkowników.

Ponadto dostęp jest również blokowany do niektórych ustawień globalnych, które mogą wpływać na tryb detaliczny, wyłączając następujące elementy:

  • Ustawienia wifi.
  • Opcje konfiguracji sieci komórkowej, w szczególności hotspotów.
  • Konfiguracja Bluetootha.
  • Kopia zapasowa i resetowanie, data i godzina oraz sieci komórkowe (w ogóle się nie pojawiają).

Jeśli użytkownik jest bezczynny przez pewien czas (domyślnie 90 sekund), tryb detaliczny wyświetla okno dialogowe systemu z monitem o opuszczenie sesji lub kontynuowanie. Jeśli użytkownik zdecyduje się wyjść lub jeśli nie ma odpowiedzi przez pięć sekund, tryb detaliczny usuwa bieżącego użytkownika demonstracyjnego, przełącza się na nowego użytkownika demonstracyjnego i ponownie przegląda oryginalne wideo. Jeśli ekran zostanie wyłączony przyciskiem zasilania, po kilku sekundach zostanie automatycznie włączony.

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 demo detalicznego

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 ładującego.