Tryb demo dla sklepów

W Androidzie 7.1.1 wprowadzono obsługę trybu demo dla sklepów na poziomie systemu, dzięki czemu klienci mogą sprawdzić działanie urządzeń w sklepach. Urządzenia są konfigurowane do trybu demo dla sklepów za pomocą aplikacji właściciela urządzenia, aby ograniczyć korzystanie z urządzenia tylko do niektórych aplikacji w trybie demo. Użytkownicy nie mogą dodawać konta osobistego na urządzeniu demonstracyjnym w sklepie. W Androidzie 8.1 zmieniono sposób obsługi tej funkcji, aby umożliwić tworzenie użytkowników demonstracyjnych za pomocą interfejsu DevicePolicyManager createAndManageUser. Umożliwia to znacznie większe dostosowanie przez producenta OEM standardowego trybu sprzedaży detalicznej pod względem zarządzania użytkownikami i zasadami dotyczącymi urządzenia demonstracyjnego.

Interfejsów API DevicePolicyManager można używać w wersjach starszych niż Android 8.1, ale użytkownicy typu demo (DevicePolicyManager.MAKE_USER_DEMO) nie mogą być tworzeni za pomocą interfejsu API createAndManageUser w wersjach 8.0 i starszych.

Implementacja w Androidzie 8.1 i nowszych wersjach

W tej sekcji opisujemy ulepszenia platformy oraz aplikację demonstracyjną w Androidzie 8.1 i nowszych wersjach.

Zmiany na platformie

Ustawienie DEVICE_DEMO_MODE

Urządzenia, które implementują tryb demonstracyjny dla sprzedawców oparty na właścicielu urządzenia, muszą przed udostępnieniem ustawić wartość Settings.Global.DEVICE_DEMO_MODE na 1, aby wskazać, że urządzenie jest udostępniane w trybie demonstracyjnym dla sprzedawców. SystemServer używa tego flagi do zarządzania aspektami trybu sprzedaży detalicznej, takimi jak profil zasilania i  interfejs SystemUI.

Włącz RetailDemoModeService

Na urządzeniach z trybem demonstracyjnym dla sklepów kreator konfiguracji ustawia globalne ustawienie Global.DEVICE_DEMO_MODE na true, aby wskazać, że urządzenie weszło w tryb demonstracyjny. Gdy RetailDemoModeService zobaczy to ustawienie, utworzy użytkownika demonstracyjnego i przełączy się na niego po uruchomieniu użytkownika 0, włączy niestandardowy program uruchamiający określony w zasobie nakładki i wyłączy SUW. Serwer systemowy i interfejs systemowy również używają tego flagi do zarządzania aspektami trybu detalicznego.

Ustawianie niestandardowego programu uruchamiającego lub odtwarzacza 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 ten sposób:

<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>

Aplikacja DemoPlayer w trybie demo dla sklepów, która znajduje się w lokalizacji /packages/apps/RetailDemo, jest domyślnym niestandardowym programem uruchamiającym w ramach Projektu Android Open Source (AOSP). Aplikacja wyszukuje film na partycji urządzenia, np. /data/preloads/demo/retail_demo.mp4, i odtwarza go 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 systemu.

Niestandardowy program uruchamiający musi mieć komponent niestandardowy oznaczony jako domyślnie wyłączony, aby nie wyświetlał się w scenariuszach innych niż demonstracyjne. W scenariuszu demonstracyjnym serwer systemowy włącza określony config_demoModeLauncherComponent podczas rozpoczynania nowej sesji demonstracyjnej.

Kreator konfiguracji wyszukuje też wspomniany wcześniej film, aby umożliwić przejście do trybu sprzedaży detalicznej. SUW można zmodyfikować tak, aby szukał innego znaku specyficznego dla producenta OEM, który wskazuje, że tryb demo dla sklepów jest obsługiwany, jeśli film nie jest częścią wersji demonstracyjnej. Jeśli istnieją partycje systemowe A/B, partycja systemowa B musi zawierać film demonstracyjny w folderze /preloads/demo. Zostanie on skopiowany do folderu /data/preloads/demo przy pierwszym uruchomieniu.

Dostosowywanie wstępnie załadowanych aplikacji w trybie demo dla sklepów

Wstępnie załadowane aplikacje mogą dostosowywać swoje działanie w trybie demonstracyjnym dla sklepów, wywołując interfejs UserManager.isDemoUser(), aby sprawdzić, czy aplikacja została uruchomiona w środowisku demonstracyjnym.

Na koncie użytkownika demonstracyjnego obowiązują pewne ograniczenia, podobne do zasad dotyczących zarządzanych urządzeń lub profili, które uniemożliwiają aplikacjom i użytkownikom wykonywanie określonych operacji. Jednym z tych ograniczeń jest DISALLOW_MODIFY_ACCOUNTS. W przypadku tego ograniczenia AccountManagerUstawienia nie zezwalają na dodawanie kont. Niektóre aplikacje Google reagują na to ograniczenie i wyświetlają komunikat o błędzie, a inne nie proszą o konto (np. YouTube i Zdjęcia). Zalecamy, aby aplikacje OEM sprawdzały też, czy ustawienie DISALLOW_MODIFY_ACCOUNTS jest włączone, i odpowiednio reagowały na tę sytuację.

Aktualizacje systemu

Domyślnie, gdy tryb sprzedaży detalicznej jest włączony, zasady urządzenia są ustawione na automatyczną aktualizację bezprzewodową (OTA). Urządzenia w sklepach pobiorą aktualizację, uruchomią się ponownie i zainstalują ją (z zachowaniem progów baterii) bez interakcji użytkownika.

Aplikacja trybu demo dla sklepów

Wdrożenie trybu demonstracyjnego w sklepie 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 folderze /packages/apps/RetailDemo.

Aplikacje właściciela urządzenia nie wymagają podniesionych uprawnień ani wstępnej instalacji w obrazie systemu i można je pobrać podczas konfiguracji lub procesu udostępniania. Są one w większości wdrażane jak tradycyjne aplikacje, z tymi różnicami:

Interfejsy API w klasie DevicePolicyManager umożliwiają właścicielowi urządzenia i właścicielowi profilu wymuszanie różnych zasad dotyczących urządzenia. Niektóre funkcje DevicePolicyManager, które mają zastosowanie w trybie demo dla sklepów, są wymienione poniżej.

  • Tworzenie kont użytkowników i zarządzanie nimi.

  • Zrestartuj urządzenie.

  • Ustaw dozwolone pakiety LockTask.

  • Instaluj pakiety za pomocą instalatora pakietów.

  • Blokowanie możliwości odinstalowywania pakietów.

  • Włącz automatyczne aktualizacje systemu. Urządzenia będą automatycznie pobierać i stosować aktualizacje OTA.

  • Wyłącz ekran blokady.

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

  • Ustaw listę dozwolonych ustawień Settings.Global, Settings.SecureSettings.System.

  • Ustaw zasady uprawnień na PERMISSION_POLICY_AUTO_GRANT, co automatycznie przyznaje wszystkie uprawnienia czasu działania. Uprawnienia można też przyznawać w węższym zakresie: pojedyncze uprawnienie do pojedynczej aplikacji. Nie dotyczy to uprawnień app-ops, które użytkownicy muszą nadal przyznawać indywidualnie dla każdego użytkownika i każdej aplikacji.

  • Ustaw ograniczenia użytkownika odpowiednie dla trybu sprzedaży detalicznej zgodnie z definicją w UserManager w ten 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

Aktualizowanie filmu demonstracyjnego w internecie

Aplikacja RetailDemo w folderze /packages/apps/RetailDemo może aktualizować film demonstracyjny, jeśli jest dostępna łączność sieciowa. Adres URL, z którego można pobrać film, można skonfigurować, zastępując w aplikacji RetailDemo ten ciąg znaków:

<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>

Jeśli w różnych regionach mają być używane różne filmy, można skonfigurować różne adresy URL pobierania, używając zasobów ciągów tekstowych specyficznych dla danego języka w pliku res/values-*/strings.xml. Jeśli na przykład 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, jak pokazano poniżej.

  • W pliku res/values-en-rUS/strings.xml:

    <string name="retail_demo_video_download_url">download URL for US video goes here</string>
    
  • W pliku 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 co najwyżej raz po każdym ponownym uruchomieniu urządzenia. Gdy film jest odtwarzany na urządzeniu, aplikacja RetailDemo sprawdza w tle, czy podano adres URL pobierania i czy film pod tym adresem URL jest nowszy od odtwarzanego.

Jeśli tak, aplikacja RetailDemo pobierze i rozpocznie odtwarzanie filmu. Po pobraniu filmu będzie on używany do odtwarzania we wszystkich przyszłych sesjach demonstracyjnych. Żadne z tych sprawdzeń nie zostanie powtórzone do czasu następnego ponownego uruchomienia.

Wskazówki dotyczące filmów demonstracyjnych

Filmy demonstracyjne muszą być w orientacji pionowej lub, w przypadku tabletów, w naturalnej orientacji urządzenia i mogą mieć dowolną długość powyżej 5 sekund. Treści nie mogą powodować wypalenia ekranu, ponieważ będą wyświetlane w sposób ciągły.

Więcej informacji znajdziesz w definicjach użytkowników, profili i kont w dokumentacji dla deweloperów Androida, dokumentacji interfejsu Device Policy Manager APIprzykładowej aplikacji właściciela urządzenia.

Weryfikacja

CTS nie obejmuje trybu demonstracyjnego w sklepie, ponieważ jest to funkcja opcjonalna. Testowanie musi być przeprowadzane ręcznie lub za pomocą testów jednostkowych w przypadku aplikacji demonstracyjnej.

Sesja demonstracyjna

Konfigurowanie sesji demonstracyjnej

Urządzenia demonstracyjne w sklepach mogą uruchamiać się w trybie demo dla sklepów, jeśli zostały w nim skonfigurowane fabrycznie. Pracownicy sklepów mogą też włączyć tryb sprzedaży detalicznej bezpośrednio w kreatorze konfiguracji.

Tryb demo dla sklepów

Rysunek 2. Tryb demo dla sklepów

Wyświetlanie sesji demonstracyjnej

Gdy urządzenie przejdzie w tryb sprzedaży detalicznej, przełączy się na nowego użytkownika demonstracyjnego i automatycznie uruchomi niestandardowy program uruchamiający określony w zasobie nakładki, zgodnie z opisem w sekcji Implementacja. Domyślnie ten niestandardowy program uruchamiający odtwarza film demonstracyjny w pętli, dopóki użytkownik nie dotknie ekranu, aby rozpocząć sesję użytkownika demonstracyjnego. W tym momencie niestandardowy program uruchamiający uruchamia program systemowy, a następnie kończy działanie. Producenci OEM mogą zmodyfikować niestandardowy program uruchamiający, aby dodatkowo uruchamiać inną usługę lub aktywność po wyjściu.

Aby zachować integralność trybu sklepowego, wyłączona jest blokada klawiszy, a także niedozwolone są pewne działania z szybkich ustawień, które mogłyby negatywnie wpłynąć na tryb sklepowy, w tym:

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

Dodatkowo blokowany jest dostęp do niektórych ustawień globalnych, które mogą wpływać na tryb sklepowy. W tym celu wyłączamy te funkcje:

  • Ustawienia Wi-Fi.
  • opcje konfiguracji sieci komórkowych, zwłaszcza hotspotów;
  • Konfiguracja Bluetootha.
  • Kopia zapasowa i resetowanie, Data i godzina oraz Sieci komórkowe (w ogóle się nie wyświetlają).

Jeśli użytkownik jest nieaktywny przez pewien czas (domyślnie 90 sekund), tryb sprzedaży detalicznej wyświetla okno systemowe z prośbą o zakończenie sesji lub kontynuowanie. Jeśli użytkownik zdecyduje się wyjść lub jeśli przez 5 sekund nie będzie żadnej reakcji, tryb sprzedaży detalicznej usunie bieżącego użytkownika demonstracyjnego, przełączy się na nowego i ponownie odtworzy oryginalny film. Jeśli ekran zostanie wyłączony za pomocą przycisku zasilania, po kilku sekundach włączy się automatycznie.

Po zakończeniu sesji demonstracyjnej urządzenia wyciszają się i resetują niektóre ustawienia globalne, w tym:

  • Jasność
  • Automatyczne obracanie
  • Latarka
  • Język
  • Ułatwienia dostępu

Wyłączanie trybu demo dla sklepów

Aby wyjść z trybu sprzedaży detalicznej, pracownicy sklepu muszą się upewnić, że urządzenie demonstracyjne nie jest zarejestrowane w zarządzaniu urządzeniami, i przywrócić na nim ustawienia fabryczne z poziomu programu rozruchowego.