Android Automotive是由 Android 開源專案 (AOSP) 提供的車載資訊娛樂平台解決方案。本主題的文章介紹了 Android 汽車系統 UI 提供的關鍵概念和元件,以及為 OEM、第三方開發人員和最終用戶建立有效的人機介面 (HMI) 系統所需的核心應用程式。
- AOSP 主機整合指南。 App Host 允許 3P 汽車應用程式代表其呈現 OEM 風格的使用者介面 (UI) 元件。
- 汽車設定結構。汽車設定為 OEM 提供了以汽車為中心的視覺使用者介面、基本的駕駛員分心優化以及額外的客製化入口點。
- 汽車 UI 庫整合指南。 Car UI Library 提供了一個 UI 開發框架,使車內的所有應用程式能夠實現一致性和客製化。
- 自訂狀態列系統圖示。狀態列是 Android 系統 UI 的一個元件,用於持續向使用者顯示重要資訊。了解如何自訂狀態列系統圖示。
- 平視通知。了解如何自訂平視通知。
- 撥號器。使用此 Android 系統應用程式可為藍牙通話、聯絡人瀏覽和通話管理實現分散注意力優化 (DO) 體驗。
- 媒體。只需一些設定和服務,開發人員就可以擴展現有的媒體應用程式。雖然應用程式必須遵循汽車媒體模板,但開發人員可以自訂模板顏色、字體、圖示等,以創建品牌體驗。
- 通知。了解如何變更通知的外觀和配置。
術語
這些術語用於 HMI 和相關文章:
學期 | 定義 |
---|---|
核心應用程式 | 對系統功能至關重要的關鍵應用程式集,包括設定、收音機、HVAC、媒體、撥號器和鍵盤。 |
相容性定義文檔 (CDD) | 枚舉裝置與最新版本的 Android 相容必須滿足的要求。 |
相容性測試套件 (CTS) | 免費的商業級測試套件,可從相容性測試套件下載下載。 |
客製化 | 修改 AOSP 實作以滿足 OEM 要求的練習。通常,這涉及使用資源覆蓋來應用外觀更改,同時確保遵守 CDD、CTS 和所有相關的使用者體驗指南。 |
英雄應用程式 | 一組對 Android 各個方面都至關重要的關鍵應用程序,包括功能、可升級性、第三方開發者生態系統和最終用戶。英雄應用程式包括通知、設定、媒體和通訊中心/撥號器。相應的 AOSP 實現應具有生產品質。 |
資源疊加 | 若要影響使用者介面的呈現,請使用此機制在編譯時(最常見)或在執行時間(執行時資源覆蓋 (RRO))取代顏色、變更尺寸、啟用繪圖以及套用佈局資源。 |
系統介面 | 屬於系統的應用程式外部的使用者介面,例如導覽列、狀態列、鎖定螢幕和音量對話框。 |
主題 | 顏色和樣式的集合,用於確定繼承主題的元件和應用程式的外觀。 |
使用者體驗(UX) | 使用者介面(UI)設計及其可用性領域。 |
客製化
系統 UI 和其他核心系統應用程式的 AOSP 實作為啟動 HMI 開發過程奠定了堅實的基礎。修改 AOSP 實現(主要透過使用資源覆蓋)以滿足 OEM 的品牌、業務和法律要求的做法稱為客製化。
雖然整個系統的設計和建造是靈活的,但不同的組件預計會進行不同程度的客製化:
系統使用者介面。 OEM 可以在 CDD 和 CTS 以及任何其他適用的 UX 指南提供的範圍內定製或替換 AOSP 實現。
非英雄系統應用程式(也稱為參考) 。 OEM 可以定製或取代 AOSP 實作。
英雄應用程式。每個應用程式都附帶一套詳細的客製化指南。強烈鼓勵 OEM 使用 AOSP 實現,然後在這些準則提供的範圍內進行自訂。
密度配置
為了確保在給定物理顯示配置的情況下正確渲染 UI 元素,密度屬性必須設定為與物理密度最匹配的儲存桶 ( Display Metrics ),例如建置檔案中的以下條目:
PRODUCT_PROPERTY_OVERRIDES := \ ro.sf.lcd_density=160
使用者體驗限制引擎
CarUxRestrictionsManager為應用程式提供了一個鉤子來監聽與駕駛狀態相關的變化,以適當地修改使用者體驗。 OEM 可以覆寫packages/services/Car/service/res/xml/car_ux_restrictions_map.xml
中的設定檔來影響系統的行為。
系統主題
規定係統範圍預設項目集(例如顏色和文字樣式)的主題是DeviceDefault 。我們鼓勵 OEM 透過修改 DeviceDefault 主題來啟動整個自訂流程。預設情況下,系統UI以及AOSP中的所有系統應用程式都繼承自該主題。也鼓勵 OEM 開發的系統應用繼承 DeviceDefault。第三方開發的應用程式不應繼承 DeviceDefault,而是使用androidx.car
庫中提供的Theme.Car 。文件位置如下:
- 核。
/frameworks/base/core/res/res/values/themes_device_defaults.xml
- 顏色。
/frameworks/base/core/res/res/values/colors_car.xml
- 款式。
/frameworks/base/core/res/res/values/styles_car.xml
- 汽車覆蓋。
/packages/services/Car/car_product/overlay/.../values/themes_device_defaults.xml
OEM 預計將在其供應商目錄中擁有與car_product
目錄並行的覆蓋結構,以進一步擴展car_product
覆蓋。
主題遊樂場應用程式
該應用程式透過在一處可視化所有主題屬性來簡化自訂DeviceDefault
主題的過程。此外,透過比較此應用程式中某些樣式與其他系統應用程式的渲染方式,開發人員可以快速偵錯主題問題。該應用程式可在以下位置取得:
/packages/services/Car/tests/ThemePlayground
系統介面
系統 UI 包含/frameworks/base
下的所有 UI,主要在/frameworks/base/packages/CarSystemUI
中。這包括導覽列、狀態列、鎖定畫面、音量對話框、Toast、使用者選擇器和權限對話框。 OEM 可以透過資源覆蓋和主題來廣泛自訂系統 UI 元件,前提是每個元件都符合 CDD、CTS 和其他適用的 UX 指南的要求。
系統應用程式
Android Automotive 包含一組對整體系統功能至關重要的核心系統應用程式。其中,通訊中心、媒體、通知和設定被視為英雄應用程式。
- 通訊中心
- 暖通空調
- 輸入法(鍵盤)
- 啟動器(主螢幕)
- 本地媒體播放器
- 媒體
- 信差
- 通知
- 收音機
- 設定
主螢幕
主畫面稱為「汽車啟動器」 ,是 HMI 體驗的登陸頁面。 AOSP 實現僅供參考,OEM 預計會以自己的實現替換該實現,該實現通常根據需要結合導航、媒體播放、通訊和其他系統狀態。通常,汽車啟動器應用程式會顯示系統上可用的應用程式。若要了解如何處理最近使用的事件、套件變更和無頭(無啟動器活動)應用程式等事件,請參閱參考實作。
通知
通知是 Android 作業系統不可或缺的組成部分, Android Automotive 中也包含相同的結構(包括抬頭通知、通知清單/中心、通知 API、排名和內聯操作)。有關詳細信息,請參閱手持設備通知概述。為了優化汽車用例,進行了以下修改(與手持式通知堆疊相比):
使用者可見的整體通知內容減少。從通知清單/中心刪除正在進行的媒體播放、正在進行的導航和系統應用程式的「不重要」(重要性為低及以下)前台服務通知,並理解這些通知要么是多餘的(例如,顯示媒體狀態的集群) )或沒有用。
刪除複雜的上下文控制項(例如長按和基於滑動長度的控制項)。
尊重 UX 限制引擎配置。
- 訊息通知內容預覽可能會根據駕駛狀態隱藏。
- 所有字串都有最大長度上限。
在 Android 9 中新增了專門針對汽車的新通知類別,僅適用於作為
android.uid.system
運行的捆綁系統應用程式。CATEGORY_CAR_EMERGENCY
。排在通知清單的頂部。繞過請勿打擾 (DND) 控制。-
CATEGORY_CAR_WARNING
。排名低於緊急情況,高於其他情況(繞過免打擾)。 CATEGORY_CAR_INFORMATION
。根據「重要性」和新近度與其他通知進行排名。
通知堆疊的端到端實作(從通知 API 到 UI)被認為是英雄應用程式。為了確保所有 HU 之間一致的 API 互通性並最大限度地提高可升級性,強烈鼓勵 OEM 採用 AOSP 實施,然後對其進行輕鬆自訂。
客製化
標準的 DeviceDefault 主題和資源覆蓋適用。數量非常有限的行為自訂旋鈕可在以下位置取得:
packages/apps/Car/Notification/res/values/config.xml
設定
設定應用程式(汽車設定)是公開旋鈕的英雄應用程式之一,用戶可以使用它來配置 Android 作業系統的各個方面和汽車的其餘部分。設定應用程式公開了作業系統中的 200 多個功能,這些功能與每個主要 Android 版本緊密結合。為了實現可升級性並避免碎片化,強烈鼓勵 OEM 採用 AOSP 實現,然後對其進行自訂(而不是分叉實現)。
客製化
設定應用程式考慮了自訂並公開了多種自訂途徑。
主題化。允許對每個 Preference 物件類型的呈現方式進行視覺化自訂,包括:
Preference.DeviceDefault.CheckBoxPreference
Preference.DeviceDefault.DialogPreference.EditTextPreference
層次結構定制。要啟用:
啟動到任根片段,覆寫名為
Settings/res/values/config.xml
檔案中的config_settings_hierarchy_root_fragment
的值訂單、分組、文字和圖示等項目的自訂、疊加
Settings/res/xml/*.xml
靜態注入。在設定覆蓋項目時,OEM 可以透過定義附加的片段和控制器類別並將其新增至層次結構來新增專有螢幕。
動態注射。如果單獨的應用程式 (
apk
) 託管必須從主設定應用程式連結的設定畫面,則可以動態注入單獨的應用程式。有關詳細信息,請參閱動態首選項。
媒體
Media 是一款英雄應用程序,它代表實現MediaSession
和MediaBrowser
API 的媒體應用程式提供前端使用者體驗。媒體應用程式可以是第三方應用程式(例如 Spotify 和 Pandora),也可以是其他媒體來源,例如藍牙 (BT) 串流媒體和本地媒體。
Android Auto(投影)中提供了數百個媒體應用程序,所有這些應用程式都實現了這些媒體 API,如為 Auto 提供音訊播放中所述。媒體 API 隨著每個主要 Android 版本以及Androidx庫的發布而不斷發展。為了確保所有媒體應用程式和 Android 未來版本之間的 API 互通性,強烈鼓勵 OEM 採用 AOSP 實現,然後對其進行自訂。
客製化
透過 DeviceDefault 主題的標準主題也適用於媒體。此外,只要客製化在使用者體驗指南的範圍內,就可以透過資源覆蓋來進一步客製化外觀。
USB 媒體與媒體來源
在可能的情況下,強烈建議透過MediaSession
和MediaBrowser
API 的實作將這些媒體來源插入 Media(任何第三方媒體應用程式都是如此)。請參閱 AOSP 中的 LocalMediaPlayer 應用程式。此應用程式顯示本機媒體檔案並在媒體中顯示為來源。