Android Automotive 提供專為車輛開發的全新系統 UI。大多數元件 系統 UI 與架構服務緊密結合。系統 UI 指的是 元素。Automotive System UI (位於 CarSystemUI 元素套件) 是 Android 系統 UI (在系統 UI 套件中) 的擴充功能。 這項專為車輛打造
什麼是系統 UI?
Automotive 系統 UI 專用的元件包括:
元件 | 說明 |
---|---|
螢幕鎖定 UI | 通過特定使用者帳戶驗證使用者的畫面。 |
導覽列 | 將系統列放在畫面左側、底部或右側, 可加入不同的商情項目按鈕,方便前往不同應用程式、切換通知面板,以及 提供車輛控制 (例如空調)。這與 Android 系統 UI 不同 實作畫面,提供返回、主畫面和應用程式堆疊按鈕。 |
狀態列 | 沿著畫面中呈現的系統列,作為導覽列。
狀態列也提供以下支援:
|
系統 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) 可提供使用者介面進入點來切換使用者,但有時結果可能 並非最合適的做法發生這個情況時:
- 原始設備製造商 (OEM) 會建立並顯示自訂載入畫面 (或對話方塊)。
- 根據使用者體驗,原始設備製造商 (OEM) 會在使用者選擇執行方式時,啟動自訂載入畫面 切換鈕,使用者切換完成後即可隱藏該設定。
- 原始設備製造商 (OEM) 必須設定優先順序 視窗。例如優先順序較高的視窗類型。優先順序 優先順序不得超過 Keyguard 的層級。
- 原始設備製造商 (OEM) 會在核心架構中設定
config_customUserSwitchUi=true
config.xml
(如config_customuserswitchui
中所述)。身為 結果,架構「不會」顯示CarUserSwitchingDialog
。
自訂螢幕鎖定畫面
螢幕鎖定是系統 UI 的必要部分,可透過原始設備製造商 (OEM) 進行自訂。
如要自訂流程,請先從 frameworks/base/packages/CarSystemUI/
開始。
自訂初次使用者設定
設定精靈會執行初次使用者設定。您也可以自訂這項功能。你可以 請使用 UserManager API 建立使用者在某些情況下,可在背景中實作,因此簡化流程 執行設定精靈。