電視輸入框架

Android TV HAL 圖示

Android TV 輸入架構 (TIF) 可簡化將直播內容傳送到 Android TV 的程序。Android TIF 提供標準 API,供製造商建立輸入模組來控制 Android TV,並透過 TV Input 發布的中繼資料,啟用直播電視搜尋和建議功能。

這個架構並非要實作電視標準或區域規定,而是要讓裝置製造商更輕鬆地符合區域數位電視廣播標準,不必重新實作。如果您是想建立自訂 TV Input 的第三方應用程式開發人員,也可以參考本節的說明文件。

元件

Android TV 輸入架構實作項目包含 TV 輸入管理員。 TIF 會與 TV App (無法由第三方應用程式取代的系統應用程式) 搭配運作,存取內建和 IP 頻道。電視應用程式會透過電視輸入管理工具,與裝置製造商或其他方提供的電視輸入模組通訊。

電視輸入架構包含:

  • 電視供應商 (com.android.providers.tv.TvProvider):頻道、節目和相關聯權限的資料庫
  • 電視應用程式 (com.android.tv.TvActivity):處理使用者互動的應用程式
  • 電視輸入管理工具 (android.media.tv.TvInputManager):允許電視輸入與 TV App 通訊
  • 電視輸入:代表實體或虛擬調諧器和輸入埠的應用程式
  • 電視輸入 HAL (tv_input 模組):硬體定義,可讓系統電視輸入來源在實作時存取電視專屬硬體
  • 家長監護功能:可封鎖頻道和節目的技術
  • HDMI-CEC:透過 HDMI 遙控各種裝置的技術
  • 調諧器架構:內建調諧器電視輸入裝置專用的架構
  • MediaCas:條件式存取架構
  • Tuner Resource Manager:這項服務可管理電視輸入、MediaCas 和內建調諧器輸入的硬體資源

下文將詳細說明這些元件。如要詳細瞭解 Android TV 輸入架構架構,請參閱下圖。

Android TIF 架構總覽
圖 1. Android TV 輸入架構 (TIF) 架構

流程

架構的運作方式如下:

  1. 使用者會看到並操作 TV 應用程式,這是無法由第三方應用程式取代的系統應用程式。
  2. 電視應用程式會顯示電視輸入的影音內容。
  3. 電視應用程式無法直接與電視輸入裝置通訊。電視輸入管理工具會識別電視應用程式的電視輸入狀態。如要進一步瞭解這些限制,請參閱下方的「電視輸入管理工具」。

權限

  • 只有 signatureOrSystem TV Inputs 和 TV App 具有電視供應商資料庫的完整存取權,且能夠接收 KeyEvents。
  • 只有系統電視輸入內容可以透過 TV Input Manager 服務存取 TV Input HAL。電視輸入來源是透過電視輸入來源管理員工作階段一對一存取。
  • 第三方電視輸入內容可存取電視供應商資料庫,但只能讀取/寫入相符的套裝組合資料列。
  • 第三方電視輸入端可以顯示自己的內容,也可以顯示裝置製造商直通電視輸入端 (例如 HDMI1) 的內容。無法顯示來自非直通電視輸入的內容,例如內建或 IPTV 轉接器。
  • TV_INPUT_HARDWARE 權限,讓硬體 TV 輸入應用程式在啟動時通知 TV 輸入管理工具服務,呼叫 TV 輸入管理工具服務並新增 TV 輸入。這項權限可讓硬體 TV Input 應用程式支援每個 TV Input 服務的多個 TV Input,並動態新增及移除支援的 TV Input。

電視供應商

電視供應商資料庫會儲存電視輸入裝置的頻道和節目。電視供應商也會發布及管理相關聯的權限,確保電視輸入裝置只能查看自己的記錄。舉例來說,特定電視輸入只能看到自己提供的頻道和節目,無法存取其他電視輸入的頻道和節目。

電視供應商會在內部將「播送類型」對應至「標準類型」。電視輸入內容會負責填入基礎廣播標準中的值,做為「廣播類型」,而「標準類型」欄位則會自動填入 android.provider.TvContract.Genres 中的正確相關類型。舉例來說,如果廣播標準為 ATSC A/65,節目類型為 0x25 (表示「體育」),電視輸入會以「體育」字串填入「廣播類型」,電視供應商則會以對應值 android.provider.TvContract.Genres.SPORTS 填入「標準類型」欄位。

如要查看電視供應商的詳細資料,請參閱下圖。

Android TV 供應商
圖 2. Android TV 供應商

只有位於具備特殊權限的系統分割區中的應用程式,才能讀取整個 TV Provider 資料庫。

直通電視輸入不會儲存頻道和節目。

除了頻道和節目的標準欄位,電視供應商資料庫也提供 BLOB 類型欄位 COLUMN_INTERNAL_PROVIDER_DATA,電視輸入裝置可使用每個資料表中的這個欄位儲存任意資料。該 BLOB 資料可包含自訂資訊,例如相關聯的調諧器頻率,並可能以 Protocol Buffers 或其他形式提供。「可搜尋」欄位可用於在搜尋中隱藏特定頻道 (例如為了符合特定國家/地區的內容保護規定)。

資料庫欄位範例

電視供應商支援頻道 (android.provider.TvContract.Channels) 和節目 (android.provider.TvContract.Programs) 表格中的結構化資料。這些資料表由電視輸入和系統應用程式 (例如 TV 應用程式) 填入及存取。這些資料表有四種欄位:

  • 顯示: 顯示欄位包含應用程式可能想向使用者顯示的資訊,例如頻道名稱 (COLUMN_DISPLAY_NAME) 或號碼 (COLUMN_DISPLAY_NUMBER),或是目前觀看的節目名稱。
  • 中繼資料:根據相關標準,共有三個欄位可識別內容,例如頻道的傳輸串流 ID (COLUMN_TRANSPORT_STREAM_ID)、原始網路 ID (COLUMN_ORIGINAL_NETWORK_ID) 和服務 ID (COLUMN_SERVICE_ID)。
  • 內部資料:供電視輸入自訂用途的欄位。
    部分欄位 (例如 COLUMN_INTERNAL_PROVIDER_DATA) 可自訂 BLOB 欄位,電視輸入裝置可在其中儲存頻道或節目的任意中繼資料。
  • 旗標: 旗標欄位代表頻道是否應限制搜尋、瀏覽或觀看。這項設定只能在頻道層級設定。所有節目都會延後至頻道設定的時間。
    • COLUMN_SEARCHABLE:在某些地區,可能需要限制部分管道的搜尋功能。COLUMN_SEARCHABLE = 0 表示頻道不應出現在搜尋結果中。
    • COLUMN_BROWSABLE:僅供系統應用程式使用。禁止應用程式瀏覽管道。 COLUMN_BROWSABLE = 0 表示頻道不應列入頻道清單。
    • COLUMN_LOCKED:僅供系統應用程式使用。限制無效帳戶觀看頻道,不需輸入 PIN 碼。COLUMN_LOCKED = 1 表示頻道應受到家長監護功能保護。

如需更詳盡的欄位清單,請參閱android/frameworks/base/media/java/android/media/tv/TvContract.java

權限和存取權控管

凡是有權存取相應列的使用者,都能看到所有欄位。使用者無法直接存取任何欄位,只能看到電視應用程式、系統應用程式或電視輸入裝置顯示的內容。

  • 每一列都有 PACKAGE_NAME,以及透過 TvProvider.java 查詢、插入、更新該列的套件 (應用程式)。電視輸入裝置只能存取自己寫入的資訊,無法存取其他電視輸入裝置提供的資訊。
  • 透過 AndroidManifest.xml 取得 READ 和 WRITE 權限 (須徵得使用者同意),以判斷可用的頻道。
  • 只有 signatureOrSystem應用程式才能取得 ACCESS_ALL_EPG_DATA權限,存取整個資料庫。

TV Input Manager

TV Input Manager 為整體 Android TV 輸入架構提供中央系統 API。可仲裁應用程式與電視輸入之間的互動,並提供家長監護功能。TV Input Manager 工作階段必須與 TV Input 一對一建立。電視輸入管理員可讓您存取已安裝的電視輸入,因此應用程式可以:

  • 列出電視輸入裝置並檢查狀態
  • 建立工作階段及管理聽眾

如果是工作階段,電視應用程式只能將電視輸入內容調整為已新增至電視供應商資料庫的 URI,但可使用 TvContract.buildChannelUriForPassthroughInput() 調整為直通電視輸入內容。電視輸入裝置也可能設有音量。裝置製造商提供並簽署的電視輸入內容 (簽署應用程式),或安裝在系統分區的其他應用程式,將可存取整個電視供應商資料庫。這項存取權可用於建構應用程式,以便瀏覽及搜尋所有可用的電視頻道和節目。

應用程式可以建立及註冊 TvInputCallback,並透過 android.media.tv.TvInputManager 在電視輸入的狀態變更時,或在新增或移除電視輸入時回呼。舉例來說,電視應用程式可以在電視輸入裝置中斷連線時做出反應,顯示裝置已中斷連線,並防止選取該裝置。

電視輸入管理工具會抽象化電視應用程式和電視輸入之間的通訊。電視輸入管理工具和電視輸入裝置的標準介面,可讓多個裝置製造商建立自己的電視應用程式,同時協助所有第三方電視輸入裝置在所有電視應用程式上運作。

電視輸入源

從某種意義上來說,電視輸入是 Android 應用程式,因為它們有 AndroidManifest.xml,而且已安裝 (透過 Play、預先安裝或側載)。Android TV 支援預先安裝的系統應用程式、裝置製造商簽署的應用程式,以及第三方電視輸入裝置。

部分輸入端 (例如 HDMI 輸入端或內建調諧器輸入端) 只能由製造商提供,因為這些輸入端直接與底層硬體通訊。其他服務 (例如 IPTV、時移電視和外部機上盒) 則可由第三方在 Google Play 商店提供 APK。下載並安裝完畢後,即可在 TV 應用程式中選取新的輸入內容。

直通輸入範例

Android TV 系統輸入
圖 3. Android TV 系統輸入

在這個範例中,裝置製造商提供的電視輸入內容受到信任,且可完整存取電視供應商。做為 TV Input,它不會向電視供應商註冊任何頻道或節目。如要取得用於參照直通輸入內容的 URI,請使用 android.media.tv.TvContract 公用程式方法 buildChannelUriForPassthroughInput(String inputId)。電視應用程式會與 TV Input Manager 通訊,以存取 HDMI 電視輸入端。

內建調諧器範例

Android TV 內建調諧器輸入
圖 4. Android TV 內建調諧器輸入

在本例中,裝置製造商提供的內建調諧器電視輸入內容受到信任,且具有電視供應商的完整存取權。

第三方輸入範例

Android TV 第三方輸入裝置
圖 5. Android TV 第三方輸入

在本例中,外部機上盒電視輸入是由第三方提供。由於該電視輸入端無法直接存取傳入的 HDMI 視訊饋給,因此必須透過電視輸入管理員,並使用裝置製造商提供的 HDMI 電視輸入端。

透過 TV Input Manager,外部機上盒電視輸入端可以與 HDMI 電視輸入端通訊,要求在 HDMI1 上顯示影片。因此,機上盒電視輸入端可以控制電視,而製造商提供的 HDMI 電視輸入端則會算繪影片。

子母畫面 (PIP) 範例

Android TV KeyEvents
圖 6. Android TV KeyEvents

上圖顯示如何將遙控器上的按鈕傳遞至特定電視輸入,以顯示子母畫面 (PIP)。裝置製造商提供的硬體驅動程式會解讀這些按鈕按下動作,將硬體掃描碼轉換為 Android 鍵碼,並傳遞至標準 Android 輸入管道InputReaderInputDispatcher 函式會將這些鍵碼轉換為 KeyEvents。如果電視應用程式處於焦點狀態,這些事件就會觸發電視應用程式上的事件。

只有系統電視輸入裝置有資格接收 InputEvents,且必須具備 RECEIVE_INPUT_EVENT 系統權限。電視輸入內容負責判斷要使用的 InputEvent,並應允許電視應用程式處理不需要使用的按鍵。

電視應用程式負責瞭解哪個系統電視輸入裝置處於啟用狀態 (也就是使用者選取的裝置),並消解傳入的 KeyEvents,然後將其路徑傳送至正確的電視輸入裝置管理員工作階段,呼叫 dispatchInputEvent() 將事件傳遞至相關聯的電視輸入裝置。

MHEG-5 輸入範例

下圖更詳細地說明 KeyEvents 如何透過 Android TIF 傳送。

Android TV 紅色按鈕範例
圖 7. Android TV 紅色按鈕範例

這張圖片描繪了紅鍵應用程式的流程,歐洲地區常見這類應用程式,可讓使用者在電視上存取互動式應用程式。應用程式可透過這個傳輸串流傳送。使用者點選按鈕後,即可與這些廣播應用程式互動。舉例來說,你可以使用這些廣播應用程式存取相關網頁或體育賽事比分。

請參閱「廣播應用程式」一節,瞭解廣播應用程式如何與 TV 應用程式互動。

在這個例子中:

  1. 電視應用程式處於焦點狀態,並接收所有按鍵。
  2. KeyEvents (例如紅色按鈕) 會以 InputEvents. 形式傳遞至有效的電視輸入來源
  3. 系統 TV Input 會與 MHEG-5 堆疊整合,並具備 RECEIVE_INPUT_EVENT 系統權限。
  4. 收到啟用鍵碼 (例如紅鍵) 後,電視輸入會啟用廣播應用程式。
  5. 電視輸入會將 KeyEvents 視為 InputEvents,而廣播應用程式會成為焦點並處理 InputEvents,直到遭到關閉為止。

注意:第三方電視輸入裝置一律不會收到按鍵。

電視輸入 HAL

TV 輸入 HAL 可協助開發 TV 輸入,以存取電視專屬硬體。 與其他 Android HAL 相同,電視輸入 HAL (tv_input) 也位於 AOSP 來源樹狀結構中,由供應商開發實作項目。

注意:從 Android 14 開始,電視輸入 HAL 介面會使用 AIDL 定義。

TV 應用程式

系統電視應用程式會向使用者顯示電視直播內容。Android 平台隨附參考電視應用程式 (電視直播),裝置製造商可直接使用、自訂、擴充或取代該應用程式。原始碼可在 Android 開放原始碼計畫中取得,您可以在「參考 TV 應用程式」一文中開始使用。

裝置製造商可以擴充 TV 應用程式,實作裝置製造商或國家/地區專屬功能,但這不在 TIF 或參考 TV 應用程式的範圍內。

系統電視應用程式至少需要處理下列工作:

設定與配置

  • 自動偵測電視輸入源
  • 允許電視輸入啟動頻道設定
  • 控管家長監護設定
  • 編輯頻道

查看中

  • 存取及瀏覽所有電視頻道
  • 存取電視節目資訊列
  • 顯示電子節目表 (EPG) 資料
  • 支援多個音軌和字幕軌
  • 提供家長監護 PIN 碼驗證
  • 允許電視標準 (HbbTV 等) 的電視輸入 UI 疊加層
  • 填入電視頻道和節目的搜尋結果
  • 顯示應用程式連結資訊卡
  • 支援時移 API
  • 處理 DVR 功能並支援電視錄影 API

隨著平台 TIF API 擴充,這組功能也會隨 Android 新版本增加。CTS 驗證器提供相容性測試涵蓋範圍。

支援第三方電視輸入

Android TV 提供第三方電視輸入內容的開發人員 API,讓已安裝的應用程式能將軟體頻道納入直播電視體驗。為確保 Android 裝置實作項目相容,系統 TV 應用程式必須負責向使用者顯示第三方 TV 輸入和頻道。參考用的 Live TV 應用程式提供相容的實作方式;如果裝置製造商要取代系統 TV 應用程式,必須確保自家應用程式提供類似的相容性,以滿足所有 Android TV 裝置開發人員的期望。

系統電視應用程式必須在裝置的預設電視直播服務旁,顯示第三方輸入內容。開發人員 API 的目標是讓使用者在安裝後,就能在標準電視體驗中找到頻道。

Android CDD 的「TV App」一節允許內建頻道與第三方頻道在視覺上有所區別。

以下各節說明「直播電視」應用程式如何符合 CDD 規定。

設定新管道

如要新增第三方輸入內容/頻道,使用者必須先從應用程式商店 (例如 Google Play) 尋找並安裝電視輸入內容。

部分第三方電視輸入內容會自動將頻道新增至 TvProvider 資料庫。不過,大多數都會提供設定活動,讓使用者設定頻道、提供登入詳細資料,以及執行其他動作。系統 TV 應用程式必須確保使用者可以啟動這項設定活動,因此 CDD 規定第三方輸入內容與主要 TV 應用程式之間,必須只隔著最少的導覽動作。

參考用的直播電視應用程式提供「頻道來源」選單,可存取輸入內容。

前往「設定」
圖 8. 前往「設定」

前往「設定」中的「頻道來源」
圖 9. 前往「設定」中的「管道來源」

從清單中選取來源。
圖 10. 從清單中選取來源。

從來源新增頻道
圖 11. 從來源新增頻道。

此外,安裝新的 TvInput 後,電視應用程式選單頂端會顯示通知資訊卡,方便使用者直接前往設定:

通知顯示有可用的新頻道來源。
圖 12. 通知顯示有新的頻道來源。

如果使用者透過通知採取行動,可以選取要設定的來源,如圖 10 所示。

如要瞭解這方面的開發人員期望,請參閱「定義電視輸入服務」。

自訂頻道清單

裝置製造商可能會提供使用者介面,讓使用者隱藏特定頻道及管理自己的 EPG。電視直播包含這項功能。

在「設定」中開啟頻道清單。
圖 13. 在「設定」中開啟頻道清單。

自訂頻道清單。
圖 14. 自訂頻道清單。

EPG

第三方輸入法開發人員必須確保使用者在所有相容的 Android TV 裝置上,都能在一般使用期間輕鬆前往自己的頻道。

第三方輸入裝置的頻道必須顯示在裝置的標準直播電視體驗電子節目表中。您可以採用視覺區隔或第三方頻道專屬類別 (請參閱 Android CDD 的 TV App 部分),重點在於使用者能夠找到已安裝的頻道。

為確保最佳使用者體驗,製造商必須實作 TV 應用程式,納入全球搜尋要求的搜尋結果。電視直播提供實作項目 (請參閱 ,可提供第三方輸入內容的結果 (平台相容性需要此項目),以及內建輸入內容。

影片播放操作

如果裝置搭載 Android 6.0 以上版本,電視應用程式必須支援 Android 架構的 時移 API。此外,製造商必須在 TV 應用程式中實作播放控制項,讓使用者暫停、繼續、倒轉及快轉播放內容。

如果電視輸入支援時移功能,電視應用程式必須顯示播放控制項。

播放控制項
圖 15. 播放控制項

DVR

如果裝置搭載 Android 7.0 以上版本,電視應用程式必須支援 Android 架構的 TV 錄製 API,才能支援、列出及播放錄製的節目。

裝置製造商可將 DVR 子系統插入 TIF,大幅減少在電視裝置上啟用或整合 DVR 功能的整合工作。第三方也能提供售後 DVR 系統,並插入 Android TV 裝置。

除了錄製直播內容外,電視應用程式也會處理資源衝突。舉例來說,如果裝置有兩個調諧器,就能同時錄製兩個節目。如果使用者要求錄製三部節目,電視應用程式必須處理衝突,並顯示通知或要求使用者為這些要求排定優先順序。

TV Apps 也可以實作更複雜的邏輯,例如在使用者要求錄製一集節目時,詢問是否要錄製該系列的所有後續集數。

請參閱下圖,瞭解 Android TV 中可能的 DVR 實作方式。

在 Android TV 上錄製數位影片
圖 16. 在 Android TV 上錄製數位電視節目

  1. 電視輸入服務會告知電視應用程式可用的調諧器數量,以便電視應用程式處理可能的資源衝突。
  2. 電視應用程式收到使用者發出的電視節目錄製要求。
  3. 電視應用程式會將錄製時間表儲存在內部資料庫。
  4. 到了錄製時間,電視應用程式會傳送要求,將頻道切換至與錄製內容相關聯的頻道。
  5. 電視輸入服務會收到這項要求,並回應是否有適當的資源,然後切換至該頻道。
  6. 然後,電視應用程式會將開始錄製的要求傳遞至 TV Input Manager。
  7. 電視輸入服務收到這項要求後,就會開始錄製。
  8. 電視輸入服務會將實際的影片資料儲存在外部儲存空間或雲端儲存空間。
  9. 錄製完成後,電視應用程式會將停止錄製要求傳遞至電視輸入管理員。
  10. 電視輸入服務收到要求後,就會停止錄製,並將相關聯的中繼資料新增至電視供應商,以便電視應用程式在使用者要求時顯示錄製內容。

如要進一步瞭解如何在 TV Input 服務中實作錄製功能,請參閱這篇 TV 錄製文章。

實用資源

  • Android CDD 和記錄的開發人員 API 是最終參考資料。
  • CTS Verifier 會在相容性測試計畫中執行 API。針對 Live TV 執行這項測試,有助於查看第三方輸入內容的 EPG、搜尋、家長監護和其他需求。
  • 如要瞭解這方面的開發人員期望,請參閱「定義電視輸入服務」。

家長監護

使用者可以透過家長監護功能封鎖不想要的頻道和節目,但只要輸入 PIN 碼,就能略過封鎖設定。

家長監護功能由電視應用程式、電視輸入管理員服務、電視供應商和電視輸入共同負責。

家長監護功能為必要功能,且涵蓋在 CTS 驗證器中。

許多國家/地區都已定義分級制度,TV Inputs 可透過 TVContentRating API 使用這些制度。此外,如 CTS 驗證器測試所示,電視輸入裝置可以註冊自己的自訂分級制度,該測試會導入「虛假」分級。在有標準分級制度的國家/地區,建議裝置製造商將電視輸入架構家長監護功能與他們可能納入的任何其他機制結合使用。

電視服務供應商

每個頻道列都有 COLUMN_LOCKED 欄位,可用於鎖定特定頻道,必須輸入 PIN 碼才能觀看。「節目」欄位 COLUMN_CONTENT_RATING 僅供顯示,不會用於強制執行家長監護設定。

TV Input Manager

TV Input Manager 會儲存每個遭封鎖的 TvContentRating,並回應 isRatingBlocked(),判斷是否應封鎖具有指定分級的內容。

電視輸入源

當顯示內容的分級變更 (節目或頻道變更時),或家長監護設定變更 (在 ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED 上) 時,電視輸入會呼叫電視輸入管理工具上的 isRatingBlocked(),檢查目前內容是否應遭到封鎖。如果內容應遭到封鎖,電視輸入會停用音訊和視訊,並呼叫 notifyContentBlocked(TvContentRating) 通知電視應用程式目前內容遭到封鎖。如果內容不應遭到封鎖,電視輸入會啟用音訊和視訊,並呼叫 notifyContentAllowed(),通知電視應用程式目前允許的內容。

TV 應用程式

為遵守家長監護 API,並建立相容的平台,系統電視應用程式必須提供使用者管理家長監護功能的方式,包括特定應用程式登錄的任何自訂分級。

當電視輸入裝置通知電視應用程式目前內容已遭封鎖,或使用者嘗試觀看遭封鎖的頻道時,電視應用程式會顯示 PIN 碼使用者介面。

TV 應用程式不會直接儲存家長監護設定。使用者變更家長監護設定時,電視輸入管理員會儲存所有遭封鎖的 TvContentRating,電視供應商則會儲存遭封鎖的頻道。

電視應用程式必須宣告 android.permission.MODIFY_PARENTAL_CONTROLS 權限,才能變更家長監護設定。

建議裝置製造商採取下列行動:

  • 針對參考電視直播應用程式執行 CTS 驗證器家長監護功能測試,展示相容性要求。
  • 以電視直播應用程式做為參考,開發自己的電視應用程式:特別是 ContentRatingsManager RatingSystemsFragment 來源,以及如何處理自訂分級。

HDMI-CEC

HDMI-CEC 可讓一部裝置控制另一部裝置,因此只要一個遙控器,就能控制家庭劇院中的多部電器。Android TV 會使用這項服務加快設定速度,並透過中央電視應用程式遠端控制各種電視輸入裝置。舉例來說,這項服務可以切換輸入裝置、開啟或關閉裝置電源等。

Android TIF 會將 HDMI-CEC 實作為 HDMI 控制服務,因此裝置製造商只需要開發與輕量型 Android TV HAL 互動的低階驅動程式,即可略過較複雜的業務邏輯。Android 提供標準實作方式,目的是減少實作方式不一和選擇性功能支援,以減輕相容性問題。HDMI 控制服務會使用現有的 Android 服務,包括輸入和電源。

也就是說,現有的 HDMI-CEC 實作項目必須重新設計,才能與 Android TIF 互通。建議硬體平台包含微處理器,以接收 CEC 開機和其他指令。

在 Android TV 上整合 CEC
圖 17. Android TV 上的 CEC 整合

  1. CEC 匯流排會接收目前啟用來源的指令,切換至其他來源。
  2. 驅動程式會將指令傳遞至 HDMI-CEC HAL。
  3. HAL 會通知所有 ActiveSourceChangeListeners
  4. HDMI 控制服務會透過 ActiveSourceChangeListener 收到來源變更通知。
  5. TV Input Manager 服務會產生意圖,供 TV 應用程式切換來源。
  6. 然後,電視應用程式會為要切換的電視輸入建立電視輸入管理員工作階段,並在該工作階段中呼叫 setMain
  7. 電視輸入管理工具工作階段會將這項資訊傳遞至 HDMI 電視輸入端。
  8. HDMI 電視輸入端要求設定側帶表面。
  9. 設定介面時,電視輸入管理員服務會將相應的路由控制指令傳回 HDMI 控制服務。

電視整合指南

廣播應用程式

由於每個國家/地區都有廣播專屬需求 (MHEG、Teletext、 HbbTV 等),因此製造商應為廣播應用程式提供自己的解決方案,例如:

  • MHEG:原生堆疊
  • 電傳文訊:原生堆疊
  • HbbTV:Vewd Software 的 HbbTV 解決方案

在 Android L 版本中,Android TV 預期裝置製造商會使用系統整合商或區域電視堆疊的 Android 解決方案,將介面傳遞至 TV 軟體堆疊,或傳遞必要鍵碼來與舊版堆疊互動。

以下說明廣播應用程式和 TV 應用程式的互動方式:

  1. 電視應用程式處於焦點狀態,接收所有按鍵。
  2. TV App 會將按鍵 (例如紅色按鈕) 傳遞至 TV Input 裝置。
  3. TV Input 裝置會在內部與舊版 TV 堆疊整合。
  4. 收到啟用鍵碼 (例如紅色按鈕) 後,電視輸入裝置會啟用廣播應用程式。
  5. 電視應用程式會將焦點放在廣播應用程式,並處理使用者動作。

如要使用語音搜尋/推薦功能,廣播應用程式可能支援應用程式內搜尋功能。