高畫質的多媒體介面消費性電子產品控制 (HDMI-CEC) 標準能讓媒體消費性產品進行通訊 彼此交換資訊HDMI-CEC 支援許多功能,例如 「遙控直通式」和「系統音訊控制」,但其中最受歡迎的之一 那就是 One Touch PlayOne Touch Play 可讓媒體來源裝置開啟電視,並 因此你不必搜尋電視。 從 Chromecast 切換至藍光播放器。
在 Android 12 中,連接 HDMI 的螢幕電源控制設定會與 以及內螢幕的電源控制。HDMI 播放裝置喚醒時,系統會嘗試 喚醒連網電視,並透過 HDMI CEC One Touch Play 成為目前使用中的來源。 如果裝置為目前使用中的來源才進入休眠狀態,則裝置會嘗試關閉 連網電視。
一般來說,你無法選擇支援 HDMI-CEC。不過,大多數製造商都已採用 HDMI-CEC ,確保旗下裝置能與其他公司的裝置搭配運作每家製造商都會導入 HDMI-CEC 因此裝置並非總是能相互理解, 功能會因裝置而異有鑑於此,消費者無法以安全的方式 假設有兩項宣稱 CEC 支援的產品完全相容。
支援 HDMI-CEC 2.0 可提升 HDMI 裝置之間的相容性 傳送及接收裝置皆支援此標準版本。
解決方案
導入 Android TV 輸入架構 (TIF)、HDMI-CEC
整合所有連網裝置,盡可能減少相容性問題。
Android 建立了名為 HdmiControlService
的系統服務,
緩解這些痛點。
在 Android 中提供 HdmiControlService
希望能夠提供:
- 為所有製造商導入 HDMI-CEC 的標準實作程序, 減少裝置相容性以前,製造商需自行開發 導入 HDMI-CEC 機製或採用第三方解決方案
- 服務已通過多款 HDMI-CEC 裝置的測試 市場上。Android 針對相容性進行了嚴謹的研究 產品所發現的問題,並從裝置收集實用的建議。 投入大量技術的演練經驗CEC 服務的設計旨在 在標準與修改標準之間取得良好平衡 能與人們目前使用的產品搭配運作
整體設計
「HdmiControlService
」已與系統的其他部分連線,例如
電視輸入架構 (TIF)、音訊服務和電源服務
標準指定的多項功能
請參閱下圖,說明從自訂 CEC 改用 Pixel 導入更簡單的 HDMI-CEC 硬體抽象化機制 層次 (HAL)
實作
請參閱下方圖表,瞭解 HDMI 控制服務的詳細檢視畫面。
以下是正確導入 Android HDMI-CEC 的關鍵要素:
- 管理員類別
HdmiControlManager
可提供具有特殊權限的應用程式 與 API 互動系統服務,例如電視輸入管理員服務和音訊服務 可直接使用該服務 - 本服務主要用來代管多種類型的邏輯 裝置。
- HDMI-CEC 會透過硬體抽象層與硬體連線 (HAL) 以簡化通訊協定和訊號機制的差異處理 在不同的裝置之間進行切換HAL 定義適用於裝置製造商 實作 HAL 層
注意:裝置製造商應將
插入 device.mk
中的 PRODUCT_COPY_FILES
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.hardware.hdmi.cec.xml:system/etc/permissions/android.hardware.hdmi.cec.xml
根據裝置是 HDMI 接收器或 HDMI 來源裝置而定。
裝置製造商必須將「ro.hdmi.device_type
」在
device.mk
,HdmiControlService
才能正常運作。
如果是 HDMI 來源裝置 (例如 over-top (OTT) 或機上盒 (STB) 裝置),請設定:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=4
針對 HDMI 接收器裝置 (例如面板電視),請設定:
PRODUCT_PROPERTY_OVERRIDES += ro.hdmi.device_type=0
- 裝置製造商提供的 CEC 控制器無法同時存在
只在
HdmiControlService
。必須停用或移除。一般 首先,我們需要處理製造商的特定要求 指令。製造商專用的指令處理常式應納入 來擴充/修改服務這項工作會交給裝置處理 ,且非由 Android 指定。請注意,您在 服務中,製造商專屬指令 標準指令,或裝置與 Android 不相容。 - HDMI-CEC 服務存取權受到防護等級保護
SignatureOrSystem
。僅限系統元件或 「/system/priv-app
」可以存取服務。這是為了保障 避免服務遭到惡意應用程式濫用
Android 支援 TV/Display(0)
和 Playback
device(4)
類型,可發出 One Touch Play 指令來啟用
和 Audio System (5)
(處理系統音訊模式和 ARC)。
目前不支援其他裝置類型 (Tuner 和錄音工具)。
HDMI-CEC HAL
HDMI-CEC HAL API 可讓 HdmiControlService
使用
硬體資源,用於傳送/接收 HDMI-CEC 指令、調整必要設定,
並可視需要與基礎平台的
微處理器通訊
在 Android 系統處於待機模式時接手 CEC 控制項。
版本 | 功能 | HAL 檔案 |
---|---|---|
1.0 | 設定 HAL 資料 (地址、功能)。傳送 HDMI-CEC 指令。註冊回呼即可接收 HDMI-CEC 指令和熱插電事件。 | IHdmiCec.hal IHdmiCecCallback.hal |
1.1 | 導入 HDMI-CEC 2.0 類型 | @1.1::IHdmiCec.hal @1.1::IHdmiCecCallback.hal |
測試
HDMI-CEC 2.0
Android 來源 (播放) 和接收器 (電視面板) 裝置支援 HDMI-CEC 2.0。 HDMI-CEC 2.0 可在 HDMI 裝置間提供更良好的互通性。 改善「遠端控制直通式」,以及進行更廣泛的認證測試。 一般來說,HDMI-CEC 2.0 與其他裝置的互動會更有效率 不但減少了 HDMI-CEC 流量,互動速度也更快
如要讓裝置支援 HDMI-CEC 2.0,裝置和使用者設定必須
設定使用 HDMI-CEC 2.0。HAL 導入作業也必須回報對 HDMI-CEC 2.0 的支援
在對 IHdmiCec#getCecVersion
的呼叫中。
CEC 設定
在建構期間 (由使用 RRO 的原始設備製造商 (OEM)) 和執行階段,皆可設定 HDMI-CEC 行為
(由 HdmiControlManager
@SystemApi 提供)。
HDMI-CEC 設定範例:
設定 | 選項 |
---|---|
HDMI-CEC 為啟用或停用狀態。 | 已啟用 已停用 |
播放裝置傳送的 HDMI-CEC 電源控制訊息範圍。 | 僅限電視廣告活動 轉移至電視和音訊系統 廣播 無 |
在執行階段,應用程式可查詢每項目前可用設定和允許的選項。