實作系統 UI

Android Automotive 提供專為車輛開發的全新系統 UI。大多數元件 系統 UI 與架構服務緊密結合。系統 UI 指的是 元素。Automotive System UI (位於 CarSystemUI 元素套件) 是 Android 系統 UI (在系統 UI 套件中) 的擴充功能。 這項專為車輛打造

什麼是系統 UI?

Automotive 系統 UI 專用的元件包括:

元件 說明
螢幕鎖定 UI 通過特定使用者帳戶驗證使用者的畫面。
導覽列 將系統列放在畫面左側、底部或右側, 可加入不同的商情項目按鈕,方便前往不同應用程式、切換通知面板,以及 提供車輛控制 (例如空調)。這與 Android 系統 UI 不同 實作畫面,提供返回、主畫面和應用程式堆疊按鈕。
狀態列 沿著畫面中呈現的系統列,作為導覽列。 狀態列也提供以下支援:
  • 連線圖示。包括藍牙、Wi-Fi 和無線基地台/行動網路連線。
  • 下拉通知面板。例如從螢幕頂端向下滑動。
  • 抬頭通知 (HUN)。
系統 UI 指的是畫面上顯示不屬於應用程式的任何元素。
使用者切換器 UI 使用者可選取其他使用者的畫面。
音量 UI 駕駛人使用實體音量按鈕變更音量 裝置。

系統 UI 的運作方式為何?

系統 UI 是裝置開機時執行的 Android 應用程式。 應用程式啟動後 SystemServer。 下列是系統 UI 中與使用者可見性最為相關的進入點。 請使用這些元件自訂 Automotive 專屬功能的 Android 系統 UI。

  • config_statusBarComponent
  • config_systemUIFactoryComponent

CarSystemUI 是系統 UI 套件的擴充功能,代表具有類別及 系統 UI 套件中的資源可由 CarSystemUI 套件使用及覆寫。

自訂系統 UI

重疊說明

雖然您可以修改 Android 原始碼來自訂系統 UI, 如此一來,日後要套用日後的 Android 更新就會更加複雜和複雜。相反地 支援使用疊加層目錄,可讓您替換資源檔案, 以及修改原始碼在 Android 建構系統中,重疊系統會覆寫 用戶端金鑰可清楚識別所有修改過的檔案,而不會週遊整個 。

疊加層檔案必須放在 PRODUCT_PACKAGE_OVERLAYS 目錄中,且必須 與原始 Android 開放原始碼計畫根結構完全相同。Android 裝置 10 以上,PRODUCT_PACKAGE_OVERLAYS 設為:

PRODUCT_PACKAGE_OVERLAYS := packages/services/Car/car_product/overlay

Automotive System UI 會使用系統 UI 和 CarSystemUI 套件的資源。 這表示每個位置的資源可以用疊加層覆寫,進而影響 Automotive 系統 UI 的外觀和風格。

如要取代檔案,請複製目標檔案要取代 /overlay 目錄,然後在該目錄中包含替代項目 目錄。例如,如要取代:

frameworks/base/packages/CarSystemUI/res/layout/super_status_bar.xml

新增位於以下位置的 super_status_bar.xml 替換檔案:

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

如要取代「frameworks/base/packages/SystemUI/res/values/config.xml」, (在系統 UI 中,「不是」CarSystemUI) 新增替換的 config.xml 檔案至:

packages/services/Car/car_product/overlay/frameworks/base/packages/SystemUI/res/layout/

packages/services/Car/car_product/overlay/frameworks/base/packages/CarSystemUI/res/layout/

以下提供兩個主要自訂進入點的說明。

Automotive System UI 的左側、底部和右側可能會有三條導覽列 。每個系統資訊列的顯示設定都會切換為以下設定:

  • config_enableLeftSystemBar
  • config_enableBottomSystemBar
  • config_enableRightSystemBar

每個長條都有佈建及未佈建的狀態,您可以藉由疊加顯示 個別版面配置檔案:

  • car_left_system_bar.xml
  • car_left_system_bar_unprovisioned.xml
  • car_system_bar.xml (底部導覽列的版面配置)
  • car_system_bar_unprovisioned.xml
  • car_right_system_bar.xml
  • car_right_system_bar_unprovisioned.xml

這些版面配置必須包含 com.android.systemui.car.systembar.CarSystemBarView,因此可分享 並加入任何其他必要檢視畫面如要加入導覽列內的按鈕,可使用 com.android.systemui.car.systembar.CarSystemBarButton

這些檢視畫面已在 CarSystemBar#createSystemBar 加載, 是否已為特定使用者妥善佈建裝置。

狀態列

您可以將狀態列視為導覽列,並使用其他功能。與導航不同 狀態列,沒有可停用的旗標。您可以使用下列指令來修改狀態列:

  • car_top_navigation_bar.xml
  • car_top_navigation_bar_unprovisioned.xml

這些版面配置必須包含 com.android.systemui.statusbar.car.CarNavigationBarView 位於頂層狀態列包含狀態圖示。如要變更圖示的大小,請縮放 圖示統一搭配縮放比例係數,而非指定特定大小。例如,在 「/overlay/frameworks/base/packages/CarSystemUI/res/values/dimens.xml」檔案,請將 將圖示調整為兩倍大:

<resources>
    <!-- The amount by which to scale up the status bar icons.-->
    <item name="status_bar_icon_scale_factor" format="float" type="dimen">2</item>
</resources>

狀態列位於特殊的視窗層中, 通知面板、使用者切換器、抬頭通知 (HUN) 以及 使用鍵盤。相應的版面配置項目如 super_status_bar.xml

系統 UI 原始碼變更

疊加層可能無法提供充分的自訂系統 UI 行為所需的彈性。

警示:難以更新 Android 原始碼 這項改善措施強烈建議您擴充 Automotive 系統 UI 程式碼 而不是直接修改程式碼這樣一來,基礎 Automotive System UI 原始碼 且能盡量減少合併衝突,因為所有自訂設定都是透過 已知 API 介面

您可透過以下兩個進入點自訂系統 UI 的大部分層面:

  • config_statusBarComponent
  • config_systemUIFactoryComponent

例如,如果您建立名為 com.android.systemui.statusbar.car.custom.CustomCarStatusBar,需要 擴充 CarStatusBar,更新 config_statusBarComponent 為點 新增至這個新元件擴充此類別後,即可自訂大多數與此類別相關的元素 顯示在系統列和通知邏輯

同樣地,您可以建立 CustomCarSystemUIFactory 並放入其中 config_systemUIFactoryComponent。這個類別可用來更新 VolumeUI 和螢幕鎖定畫面。

自訂使用者的切換和解鎖功能

以下資料將說明如何自訂使用者的切換體驗。

字詞 說明
鍵盤鎖 全螢幕對話方塊,避免意外與前景應用程式互動。 設定多位使用者時,可確保每位使用者的隱私權。
正在載入對話方塊 在切換使用者時顯示載入畫面。
螢幕鎖定畫面、彈跳器 使用者必須輸入 PIN 碼、解鎖圖案或密碼的畫面。
使用者自訂 Android 使用者。
使用者挑選器 裝置啟動時顯示的使用者挑選器畫面。
使用者切換器 從快速設定切換畫面時顯示使用者切換器。

自訂使用者切換

鍵盤和彈跳器

在 Android Automotive OS 中,「僅」顯示含使用者挑選器的 Keyguard 畫面 當使用者按下鎖定畫面上的 [取消] 按鈕時。鍵盤防禦畫面如下所示。

鍵盤鎖螢幕

圖 1. 鍵盤鎖螢幕

當使用者選取偏好的隱私權類型時,畫面上會顯示一個鎖定畫面,其中含有彈跳器 解鎖裝置,如下所示。

螢幕鎖定畫面

圖 2. 螢幕鎖定。

如果將居家鎖設為手動開啟或關閉電源,請使用下列指示:

adb shell input keyevent 26

使用者挑選器

當裝置與車輛的系統 UI 狀態列整合時,系統會顯示使用者挑選器畫面 和「Google 地圖」重新啟動。詳情請參閱: FullscreenUserSwitcher

載入畫面

圖 3. 使用者挑選器畫面

您可在以下位置自訂這個畫面的版面配置: car_fullscreen_user_switcher.xml

載入畫面

每當使用者切換畫面時,無論進入點為何,都會顯示載入畫面。適用對象 例如透過使用者挑選器或「設定」畫面載入畫面是 架構系統 UI,並對應至名為 CarUserSwitchingDialog。 請參閱上方圖 3 範例。

如要自訂主題,請使用 Theme_DeviceDefault_Light_Dialog_Alert_UserSwitchingDialog

如要設定 Android 使用者,初始設定精靈流程可讓驅動程式設定使用者 如果駕駛人隨後將 Android 使用者與 Google 帳戶建立關聯, 名稱。不過,如果驅動程式指定名稱 (例如 DriverB) 使用者之後將該使用者的 Google 帳戶名稱與 Maddy 這個姓名建立關聯 原始指派的名稱 (DriverB) 並未變更,因為您已明確設定該名稱。駕駛人 只能在「設定」選單中變更名稱。

可在 car_user_switching_dialog.xml. 中自訂版面配置

原始設備製造商 (OEM) 可以使用名為 NoActionBar.Fullscreen。 (這是原始的系統 UI,專為車輛參考 UI 更新)。若需更多資訊,請參閲 自訂

雖然原始設備製造商 (OEM) 可提供使用者介面進入點來切換使用者,但有時結果可能 並非最合適的做法發生這個情況時:

  1. 原始設備製造商 (OEM) 會建立並顯示自訂載入畫面 (或對話方塊)。
    • 根據使用者體驗,原始設備製造商 (OEM) 會在使用者選擇執行方式時,啟動自訂載入畫面 切換鈕,使用者切換完成後即可隱藏該設定。
    • 原始設備製造商 (OEM) 必須設定優先順序 視窗。例如優先順序較高的視窗類型。優先順序 優先順序不得超過 Keyguard 的層級。
  2. 原始設備製造商 (OEM) 會在核心架構中設定 config_customUserSwitchUi=true config.xml (如 config_customuserswitchui 中所述)。身為 結果,架構「不會」顯示 CarUserSwitchingDialog

自訂螢幕鎖定畫面

螢幕鎖定是系統 UI 的必要部分,可透過原始設備製造商 (OEM) 進行自訂。 如要自訂流程,請先從 frameworks/base/packages/CarSystemUI/ 開始。

自訂初次使用者設定

設定精靈會執行初次使用者設定。您也可以自訂這項功能。你可以 請使用 UserManager API 建立使用者在某些情況下,可在背景中實作,因此簡化流程 執行設定精靈。