零售演示模式

Android 7.1.1 引入了對零售演示模式的系統級支持,以便客戶可以在零售店檢查運行中的設備。使用裝置擁有者應用程式將裝置設定為零售演示,以確保裝置使用僅限於某些演示模式應用程式。最終用戶不得在零售演示設備上新增個人帳戶。 Android 8.1 修改了此支持,以透過 DevicePolicyManager createAndManageUser API 建立示範使用者。這使得 OEM 在演示設備上的使用者管理和設備策略管理方面能夠對標準零售模式進行更大程度的客製化。

雖然DevicePolicyManager API 可以在 Android 8.1 之前的版本上使用,但在 8.0 及更早版本中無法使用createAndManageUser API 建立演示類型使用者 ( DevicePolicyManager.MAKE_USER_DEMO )。

Android 8.1及更高版本中的實現

本節重點介紹平台增強功能並描述 Android 8.1 及更高版本中的零售演示應用程式。

平台變化

設定DEVICE_DEMO_MODE

實現基於設備所有者的零售演示模式的設備必須在預配之前將Settings.Global.DEVICE_DEMO_MODE設置為 1,以指示正在為零售演示模式預配設備。 SystemServer使用此標誌來管理零售模式的各個方面,例如電源設定檔和 SystemUI。

啟用 RetailDemoModeService

在實作零售演示模式的裝置中,設定精靈將全域設定Global.DEVICE_DEMO_MODE設為true ,以指示裝置已進入零售模式。看到此設定後, RetailDemoModeService將建立一個示範用戶,並在用戶 0 啟動時切換到該用戶,啟用覆蓋資源中指定的自訂啟動器,並停用 SUW。 System Server 和 SystemUI 也使用此標誌來管理零售模式的各個方面。

設定自訂啟動器或影片播放器

設備製造商可以透過覆寫config.xml檔案中指定的框架資源config_demoModeLauncherComponent來指定自訂啟動器,如下所示。

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

位於/packages/apps/RetailDemo 的零售演示 DemoPlayer 應用程式是 Android 開源專案 (AOSP) 中的預設自訂啟動器。該應用程式在裝置分區(例如 /data/preloads/demo/retail_demo.mp4)中尋找影片並循環播放。當使用者觸控螢幕時,自訂啟動器會停用其活動元件,這會導致預設系統啟動器啟動。

自訂啟動器必須將其自訂元件預設標記為停用,以便它不會在非示範場景中顯示。在示範場景中,系統伺服器在啟動新的演示會話時啟用指定的config_demoModeLauncherComponent

設定嚮導也會尋找前面提到的視頻,以提供進入零售模式的功能。如果影片不是演示的一部分,可以修改 SUW 以查找支援零售模式的其他 OEM 特定標誌。如果有系統 A/B 分區,則係統 B 分區必須包含位於 /preloads/demo 的示範影片。第一次啟動時,它會被複製到 /data/preloads/demo。

自訂零售演示模式的預裝應用程序

預先載入的應用程式可以透過呼叫UserManager.isDemoUser() API 來查看應用程式是否在示範環境中啟動,從而自訂零售演示模式的體驗。

在演示用戶中設定了某些限制,類似於阻止應用程式和用戶執行某些操作的託管設備或設定檔策略。這些限制之一是DISALLOW_MODIFY_ACCOUNTS 。由於此限制,帳戶管理器設定不允許新增帳戶。某些 Google 應用程式會對此限製作出反應並顯示錯誤訊息,而其他應用程式則不會提示輸入帳戶(例如 YouTube 和照片)。我們建議 OEM 應用程式也檢查DISALLOW_MODIFY_ACCOUNTS是否已設定並相應地處理該情況。

系統升級

預設情況下,啟用零售模式後,裝置策略將設定為自動無線 (OTA) 更新。零售設備將下載、重新啟動並安裝更新(遵守電池閾值),無需用戶互動。

零售演示應用程式

基於設備所有者的零售演示模式實施需要將設備策略控制器應用程式設定為設備所有者。 AOSP 在/packages/apps/RetailDemo中包含參考 RetailDemo 應用程式實作。

設備擁有者應用程式不需要提升權限或在系統映像上預先安裝,並且可以在設定或配置過程中下載。它們的實作方式大多與傳統應用程式類似,但存在以下差異:

DevicePolicyManager類別中的 API 可讓裝置擁有者 (DO) 和設定檔擁有者 (PO) 能夠強制執行各種裝置原則。以下列出了一些適用於零售演示模式的DevicePolicyManager功能。

  • 建立和管理使用者。

  • 重新啟動設備。

  • 設定LockTask允許的套件。

  • 透過PackageInstaller安裝軟體包。

  • 阻止軟體包被卸載。

  • 啟用自動系統更新。裝置將自動下載並套用 OTA 更新。

  • 停用鍵盤保護。

  • 防止設定密碼或指紋。

  • 設定一組列入白名單的Settings.GlobalSettings.SecureSettings.System設定。

  • 將權限策略設定為PERMISSION_POLICY_AUTO_GRANT ,這會自動授予所有執行時間權限。權限的授予範圍也可以更窄:對單一應用程式的單一權限。這不適用於應用程式操作權限,使用者仍必須按每個使用者、每個應用程式授予該權限。

  • 設定與UserManager中定義的零售模式相關的使用者限制,如下所示。

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

使用網路更新演示視頻

如果有網路連接, /packages/apps/RetailDemo中的 RetailDemo 應用程式能夠更新演示影片。可以透過覆寫 RetailDemo 應用程式中的以下字串值來設定下載影片的 URL。

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

如果需要在不同地區使用不同的視頻,則可以使用res/values-*/strings.xml中特定區域的字串資源來配置不同的下載 URL。例如,如果需要在美國和英國使用不同的視頻,則可以將相應的下載網址放在 res/values-en-rUS/strings.xml 和 res/values-en-rGB/strings.xml 中,分別如下所示。

  • 在 res/values-en-rUS/strings.xml 中:

    <string name="retail_demo_video_download_url">download URL for US video goes here</string>
    
  • 在 res/values-en-rGB/strings.xml 中:

    <string name="retail_demo_video_download_url">download URL for UK video goes here</string>
    

每次裝置重新啟動時最多下載一次該影片。當裝置上的影片正在播放時,RetailDemo 應用程式會在背景檢查是否提供了下載 URL,以及該 URL 上的影片是否比正在播放的影片新。

如果是這樣,RetailDemo 應用程式將下載並開始播放影片。下載影片後,它將用於在以後的所有演示會話中播放。在下次重新啟動之前,不會再進行任何檢查。

示範影片指南

演示影片必須採用縱向佈局,或者如果是平板電腦,則必須採用設備的自然方向,並且長度可以超過五秒。內容不得導致燒屏,因為它在顯示時會不斷播放。

有關詳細信息,請參閱使用者、設定檔和帳戶的Android 開發人員定義裝置策略管理器 API 文件範例裝置擁有者應用程式

驗證

CTS 不涵蓋零售演示模式,因為它是可選功能。測試必須手動進行或透過演示應用程式的單元測試進行。

演示會議

演示會話的設置

如果出廠時配置為演示模式,零售演示設備可能會啟動進入零售演示模式。或者,零售員工可以直接從設定嚮導啟用零售模式。

Retail demo mode

圖2零售示範模式

顯示演示會話

當裝置進入零售模式時,它會切換到新的演示用戶,並自動啟動覆蓋資源中指定的自訂啟動器,如實中所述。預設情況下,此自訂啟動器會重複播放演示視頻,直到用戶觸摸螢幕開始演示用戶會話。此時,自訂啟動器啟動系統啟動器,然後退出。 OEM 可以變更自訂啟動器,以便在退出時另外啟動其他服務或活動。

為了保持零售模式的完整性,鍵盤保護被停用,也禁止快速設定中可能對零售模式產生不利影響的某些操作,包括以下操作。

  • 飛航模式切換。
  • 刪除或修改 Wi-Fi 接入點(設定)。
  • 更改運營商(設定)。
  • 配置熱點(設定)。
  • 用戶切換。

此外,還可以透過停用以下功能來阻止對某些可能影響零售模式的全域設定的存取:

  • 無線網路設定。
  • 蜂窩網路配置選項,特別是熱點。
  • 藍牙配置。
  • 備份和重置、日期和時間以及行動網路(它們根本不顯示)。

如果使用者空閒一段時間(預設為 90 秒),零售模式會顯示一個系統對話框,提示使用者退出會話或繼續。如果用戶選擇退出或五秒鐘內沒有回應,零售模式將刪除目前的演示用戶,切換到新的演示用戶,並再次循環播放原始影片。如果使用電源按鈕關閉螢幕,螢幕會在幾秒鐘後自動重新開啟。

退出演示會話後,裝置會將自身靜音並重置一些全域設置,包括以下設定:

  • 亮度
  • 自動旋轉
  • 手電筒
  • 語言
  • 無障礙

退出零售演示模式

為了退出零售模式,零售員工必須確保演示設備未在設備管理下註冊,並從引導程式將設備恢復出廠設定。