零售商展示模式

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。SystemServer 和 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。有了這項限制,AccountManagerSettings 就無法新增帳戶。部分 Google 應用程式會回應這項限制並顯示錯誤訊息,其他應用程式 (例如 YouTube 和相片) 則不會提示使用者登入帳戶。我們建議 OEM 應用程式也檢查是否已設定 DISALLOW_MODIFY_ACCOUNTS,並據此處理情境。

系統更新

根據預設,啟用零售模式時,裝置政策會自動設為無線更新 (OTA)。零售裝置會在尊重電池閾值的情況下,在使用者不必操作的情況下下載、重新啟動及安裝更新。

零售商展示應用程式

如要實作以裝置擁有者為準的零售商示範模式,必須將 Device Policy Controller 應用程式設為裝置擁有者。AOSP 包含參考 RetailDemo 應用程式實作項目,位於 /packages/apps/RetailDemo

裝置擁有者應用程式不需要提高權限,也不需要在系統映像檔中預先安裝,而且可以在設定或佈建程序期間下載。這些應用程式大多像傳統應用程式一樣實作,但有以下差異:

DevicePolicyManager 類別中的 API 可讓裝置擁有者 (DO) 和設定檔擁有者 (PO) 強制執行各種裝置政策。以下列出部分適用於零售商示範模式的 DevicePolicyManager 函式。

  • 建立及管理使用者。

  • 重新啟動裝置。

  • 設定 LockTask 允許使用的套件。

  • 透過 PackageInstaller 安裝套件。

  • 禁止解除安裝套件。

  • 啟用自動系統更新功能。裝置會自動下載並套用無線更新。

  • 停用鎖定畫面。

  • 禁止設定密碼或指紋。

  • 設定 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 where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>

如果需要在不同地區使用不同的影片,您可以在 res/values-*/strings.xml 中使用語言代碼專屬的字串資源,設定不同的下載網址。舉例來說,如果需要在美國和英國使用不同的影片,則可分別將對應的下載網址放入 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 應用程式會在背景檢查是否已提供下載網址,以及網址中的影片是否比正在播放的影片更新。

如果是,RetailDemo 應用程式就會下載並開始播放影片。影片下載完成後,系統會在日後的所有示範工作階段中播放該影片。下次重新啟動前,不會再執行任何檢查。

示範影片規範

示範影片必須採用直向版面配置,如果是平板電腦,則必須採用裝置的自然方向,長度可超過五秒。內容不得導致螢幕烙印,因為內容會在螢幕上持續播放。

詳情請參閱 Android 開發人員定義的使用者、設定檔和帳戶、Device Policy Manager API 說明文件裝置擁有者應用程式範例

驗證

CTS 不涵蓋零售商示範模式,因為這是選用功能。您必須手動測試或使用單元測試來測試試用版應用程式。

示範課程

設定示範工作階段

如果零售商展示裝置是從工廠設定為展示模式,可能會在開機時進入零售商展示模式。或者,零售店員工也可以直接透過設定精靈啟用零售模式。

零售商展示模式

圖 2. 零售商展示模式

顯示示範工作階段

裝置進入零售模式時,會切換至新的示範使用者,並自動啟動疊加資源中指定的自訂啟動器,如實作一節所述。根據預設,這個自訂啟動器會重複播放示範影片,直到使用者輕觸螢幕開始示範使用者工作階段為止。屆時,自訂啟動器會啟動系統啟動器,然後退出。OEM 可以變更自訂啟動器,在退出時額外啟動其他服務或活動。

為維持零售模式的完整性,我們已停用鍵盤保護功能,並禁止使用可能對零售模式造成不利影響的特定快速設定動作,包括以下動作:

  • 飛航模式切換鈕。
  • 移除或修改 Wi-Fi 存取點 (設定)。
  • 變更電信業者 (「設定」)。
  • 設定無線基地台 (設定)。
  • 切換使用者。

此外,系統也會封鎖對部分可能影響零售模式的全球設定的存取權,方法是停用下列項目:

  • Wi-Fi 設定。
  • 行動網路設定選項,特別是熱點。
  • 藍牙設定。
  • 「備份與重設」、「日期與時間」和「行動網路」(完全不會顯示)。

如果使用者閒置一段時間 (預設為 90 秒),零售模式會顯示系統對話方塊,提示使用者要退出工作階段或繼續。如果使用者選擇退出,或在五秒內沒有任何回應,零售模式會移除目前的示範使用者,切換至新的示範使用者,然後再次循環播放原始影片。如果使用電源鍵關閉螢幕,螢幕會在幾秒後自動開啟。

退出展示時段後,裝置會自動靜音並重設部分全域設定,包括:

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

結束零售商展示模式

如要退出零售模式,零售店員工必須確認展示裝置未註冊至裝置管理系統,並透過系統啟動載入程式將裝置恢復原廠設定。