電視輸入框架

Android TV HAL 圖標

Android TV 輸入框架 (TIF) 簡化了向 Android TV 傳輸直播內容的過程。 Android TIF 為製造商提供標準 API 以創建用於控制 Android TV 的輸入模塊,並通過 TV Input 發布的元數據啟用直播電視搜索和推薦。

該框架不尋求實施電視標准或區域要求,但確實使設備製造商更容易滿足區域數字電視廣播標準而無需重新實施。本節中的文檔也可能對想要創建自定義 TV 輸入的第三方應用程序開發人員有用。

成分

Android TV Input Framework 實現包括一個 TV Input Manager。 TIF 可與第三方應用程序無法替代的系統應用程序 TV 應用程序配合使用,以訪問內置和 IP 調諧器頻道。 TV App 通過 TV Input Manager 與設備製造商或其他方提供的 TV Input 模塊進行通信。

TV 輸入框架包括:

  • TV Provider ( com.android.providers.tv.TvProvider ):頻道、節目和相關權限的數據庫
  • TV App ( com.android.tv.TvActivity ):處理用戶交互的應用
  • TV Input Manager ( android.media.tv.TvInputManager ):允許 TV Inputs 與 TV App 通信
  • TV Input:代表物理或虛擬調諧器和輸入端口的應用程序
  • TV Input HAL( tv_input模塊):允許系統 TV Input 在實現時訪問 TV 特定硬件的硬件定義
  • 家長控制:允許阻止頻道和節目的技術
  • HDMI-CEC:允許通過 HDMI 遠程控制各種設備的技術
  • Tuner Framework:內置調諧器電視輸入的框架
  • MediaCas:條件訪問框架
  • 調諧器資源管理器:用於管理電視輸入、MediaCas 和內置調諧器輸入的硬件資源的服務

下面將詳細介紹這些組件。有關 Android TV 輸入框架架構的詳細視圖,請參見下圖。

Android TIF 架構概述
圖 1. Android TV 輸入框架 (TIF) 架構

流動

以下是架構的實施方式:

  1. 用戶看到 TV 應用程序並與之交互,這是一個第三方應用程序無法替代的系統應用程序。
  2. TV App 顯示來自 TV Input 的 AV 內容。
  3. TV 應用程序無法直接與 TV Inputs 對話。 TV Input Manager 識別 TV 應用程序的 TV Input 狀態。有關這些限制的更多詳細信息,請參閱下面的TV Input Manager

權限

  • 只有signatureOrSystem TV Inputs 和 TV App 可以完全訪問 TV Provider 數據庫並能夠接收 KeyEvent。
  • 只有系統 TV Input 可以通過 TV Input Manager 服務訪問 TV Input HAL。通過 TV Input Manager 會話一對一地訪問 TV Input。
  • 第三方 TV 輸入具有對 TV Provider 數據庫的包鎖定訪問權限,並且只能對匹配的包行進行讀/寫。
  • 第三方電視輸入既可以顯示自己的內容,也可以顯示來自設備製造商的直通電視輸入的內容,例如 HDMI1。它們無法顯示來自非直通電視輸入的內容,例如內置或 IPTV 調諧器。
  • 硬件 TV Input 應用程序的TV_INPUT_HARDWARE權限向 TV Input Manager Service 發出信號,通知 TV Input 服務在啟動時調用 TV Input Manager Service 並添加其 TV Input。此權限允許硬件 TV Input 應用程序支持每個 TV Input 服務的多個 TV Input,以及能夠動態添加和刪除其支持的 TV Input。

電視提供商

TV Provider 數據庫存儲來自 TV Inputs 的頻道和節目。 TV Provider 還發布和管理相關權限,以便 TV Input 只能看到他們自己的記錄。例如,特定的 TV Input 只能看到它提供的頻道和節目,並且被禁止訪問任何其他 TV Input 的頻道和節目。

電視提供商在內部將“廣播類型”映射到“規範類型”。 TV Inputs 負責使用基礎廣播標準中的值填充“廣播類型”,並且“規範類型”字段將自動填充來自android.provider.TvContract.Genres的正確關聯類型。例如,對於廣播標準 ATSC A/65 和類型為 0x25(意為“體育”)的節目,電視輸入將使用字符串“體育”填充“廣播類型”,而電視提供商將使用“規範類型”字段填充映射值android.provider.TvContract.Genres.SPORTS

有關 TV Provider 的詳細視圖,請參見下圖。

安卓電視提供商
圖 2. Android TV 提供商

只有特權系統分區中的應用程序才能讀取整個 TV Provider 數據庫。

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

除了頻道和節目的標準字段外,TV Provider 數據庫還在每個表中提供了一個 BLOB 類型字段COLUMN_INTERNAL_PROVIDER_DATA ,TV Inputs 可以使用它來存儲任意數據。該 BLOB 數據可以包括自定義信息,例如相關調諧器的頻率,並且可以在協議緩衝區或其他形式中提供。可搜索字段可用於使某些頻道在搜索中不可用(例如滿足特定國家/地區的內容保護要求)。

數據庫字段示例

TV Provider 支持頻道 ( android.provider.TvContract.Channels ) 和節目 ( android.provider.TvContract.Programs ) 表中的結構化數據。這些表格由 TV 輸入和系統應用程序(如 TV 應用程序)填充和訪問。這些表有四種類型的字段:

  • 顯示:顯示字段包含應用程序可能希望用戶看到的信息,例如頻道名稱 ( COLUMN_DISPLAY_NAME ) 或編號 ( COLUMN_DISPLAY_NUMBER ),或正在觀看的節目的標題。
  • 元數據:根據相關標準,用於識別內容的三個字段,如通道的傳輸流 ID( COLUMN_TRANSPORT_STREAM_ID )、原始網絡 ID( COLUMN_ORIGINAL_NETWORK_ID )和服務 ID( COLUMN_SERVICE_ID )。
  • 內部數據:用於自定義使用 TV 輸入的字段。
    某些字段,例如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

權限和訪問控制

任何有權訪問相應行的人都可以看到所有字段。用戶無法直接訪問任何字段;他們只能看到 TV 應用、系統應用或 TV 輸入顯示的內容。

  • 每行都有PACKAGE_NAME ,即擁有該行的包(應用程序),通過 TvProvider.java 對 Query、Insert、Update 進行了檢查。 TV Input 只能訪問它編寫的信息,並與其他 TV Input 提供的信息隔離開來。
  • 通過 AndroidManifest.xml 讀取、寫入權限(需要用戶同意)以確定可用通道。
  • 只有signatureOrSystem應用程序可以獲得訪問整個數據庫的ACCESS_ALL_EPG_DATA權限。

電視輸入管理器

TV Input Manager 為整個 Android TV Input Framework 提供了一個中央系統 API。它仲裁應用程序和電視輸入之間的交互,並提供家長控制功能。 TV Input Manager 會話必須與 TV Input 一對一地創建。 TV Input Manager 允許訪問已安裝的 TV Input,因此應用可以:

  • 列出電視輸入並檢查其狀態
  • 創建會話和管理監聽器

對於會話,TV 應用程序只能將 TV 輸入調整到它已添加到 TV Provider 數據庫的 URI,但可以使用TvContract.buildChannelUriForPassthroughInput()調整到的直通 TV 輸入除外。 TV Input 也可以設置其音量。由設備製造商(簽名應用程序)或安裝在系統分區中的其他應用程序提供和簽名的 TV Input 將有權訪問整個 TV Provider 數據庫。此訪問權限可用於構建應用程序以瀏覽和搜索所有可用的電視頻道和節目。

應用可以創建並註冊TvInputCallbackandroid.media.tv.TvInputManager以在 TV Input 的狀態更改或添加或刪除 TV Input 時回調。例如,TV 應用程序可以在 TV Input 斷開連接時做出反應,將其顯示為斷開連接並阻止其選擇。

TV Input Manager 抽象了 TV App 和 TV Inputs 之間的通信。 TV Input Manager 和 TV Input 的標準界面允許多個設備製造商創建自己的 TV 應用程序,同時幫助所有第三方 TV Inputs 在所有 TV 應用程序上工作。

電視輸入

TV Input 是 Android 應用,因為它們具有 AndroidManifest.xml 並已安裝(通過 Play、預安裝或旁加載)。 Android TV 支持預裝系統應用、設備製造商簽名的應用和第三方 TV Input。

有些輸入,如 HDMI 輸入或內置調諧器輸入,只能由製造商提供,因為它們直接與底層硬件對話。其他的,例如 IPTV、位置轉換和外部 STB,可以由第三方在 Google Play 商店中以 APK 的形式提供。下載並安裝後,可以在 TV App 中選擇新的輸入。

直通輸入示例

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

在此示例中,設備製造商提供的 TV Input 是受信任的,並且可以完全訪問 TV Provider。作為直通 TV Input,它不會向 TV Provider 註冊任何頻道或節目。要獲取用於引用直通輸入的 URI,請使用android.media.tv.TvContract實用程序方法buildChannelUriForPassthroughInput(String inputId) 。 TV App 與 TV Input Manager 通信以訪問 HDMI TV Input。

內置調諧器示例

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

在此示例中,設備製造商提供的內置調諧器 TV Input 是受信任的,並且可以完全訪問 TV Provider。

第三方輸入示例

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

在此示例中,外部 STB TV Input 由第三方提供。由於該 TV Input 無法直接訪問傳入的 HDMI 視頻源,因此它必須通過 TV Input Manager 並使用設備製造商提供的 HDMI TV Input。

通過 TV Input Manager,外部 STB TV Input 可以與 HDMI TV Input 對話,並要求它在 HDMI1 上顯示視頻。因此,STB TV Input 可以控制電視,而製造商提供的 HDMI TV Input 可以渲染視頻。

畫中畫 (PIP) 示例

Android TV 按鍵事件
圖 6. Android TV 按鍵事件

上圖顯示了遙控器上的按鈕如何傳遞到特定的電視輸入以實現畫中畫 (PIP) 顯示。這些按鈕按下由設備製造商提供的硬件驅動程序解釋,將硬件掃描碼轉換為 Android 鍵碼,並將它們作為KeyEvents傳遞給標準 Android輸入管道InputReaderInputDispatcher函數。如果 TV App 處於焦點位置,這些反過來會觸發 TV App 上的事件。

只有系統 TV 輸入才有資格接收InputEvents ,並且只有它們具有RECEIVE_INPUT_EVENT系統權限。 TV Input 負責確定要使用哪些 InputEvents,並應允許 TV App 處理它不需要使用的鍵。

TV App 負責了解哪個系統 TV Input 處於活動狀態,即用戶選擇的意思,並消除傳入KeyEvents的歧義並將它們路由到正確的 TV Input Manager 會話,調用dispatchInputEvent()將事件傳遞給關聯的 TV Input .

MHEG-5 輸入示例

下圖顯示瞭如何通過 Android TIF 路由KeyEvents的更詳細視圖。

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

它描繪了一個紅色按鈕應用程序的流程,該應用程序在歐洲很常見,用於讓用戶在他們的電視上訪問交互式應用程序。可以通過此傳輸流交付應用程序。單擊該按鈕時,它可以讓用戶與這些廣播應用程序進行交互。例如,您可能會使用這些廣播應用程序來訪問相關網頁或體育賽事比分。

請參閱廣播應用部分以了解廣播應用如何與 TV 應用交互。

在這個例子中:

  1. TV 應用程序處於焦點位置並接收所有鍵。
  2. KeyEvents (例如紅色按鈕)作為InputEvents.
  3. 系統 TV Input 與 MHEG-5 堆棧集成,具有RECEIVE_INPUT_EVENT系統權限。
  4. 在接收到激活鍵碼(例如紅色按鈕)時,TV Input 會激活廣播應用程序。
  5. TV 輸入將KeyEvents作為InputEvents使用,廣播應用程序是焦點並處理InputEvents直到被解僱。

注意:第三方電視輸入從不接收密鑰。

電視輸入 HAL

電視輸入 HAL 有助於開發電視輸入以訪問電視特定的硬件。與其他 Android HAL 一樣,電視輸入 HAL ( tv_input ) 在 AOSP 源代碼樹中可用,並且供應商會開發其實現。

電視應用

系統TV App向用戶呈現直播電視內容。參考 TV App(Live TV)與 Android 平台一起提供,可以由設備製造商按原樣使用、定制、擴展或替換。源代碼可在 Android 開源項目中獲得,您可以在參考 TV 應用文章中開始使用它。

設備製造商可以擴展其 TV 應用程序以實現設備製造商或特定國家/地區的功能,但這不在 TIF 或參考 TV 應用程序的範圍內。

系統 TV App 至少需要處理以下任務:

設置和配置

  • 自動檢測電視輸入
  • 讓 TV Inputs 啟動頻道設置
  • 控製家長設置
  • 編輯頻道

查看

  • 訪問和瀏覽所有電視頻道
  • 進入電視節目信息欄
  • 顯示電子節目指南 (EPG) 數據
  • 支持多個音軌和字幕軌
  • 提供家長控制 PIN 挑戰
  • 允許 TV 標準(HbbTV 等)的 TV Input UI 覆蓋
  • 填充電視頻道和節目的搜索結果
  • 顯示應用關聯卡片
  • 支持時移 API
  • 處理 DVR 功能並支持電視錄製 API

此功能集將隨著平台 TIF API 擴展的新 Android 版本而增加。 CTS Verifier 提供兼容性測試覆蓋率。

支持第三方電視輸入

Android TV 為第三方 TV 輸入提供開發者 API,使已安裝的應用能夠將軟件頻道傳送到直播電視體驗中。為確保兼容的 Android 設備實施,系統 TV 應用在向用戶顯示第三方 TV 輸入和頻道方面有一些責任。參考直播電視應用程序提供了兼容的實現;如果更換系統 TV App,設備製造商必須確保他們自己的應用程序提供類似的兼容性,以滿足開發者對所有 Android TV 設備的期望。

系統 TV 應用程序必須在設備的默認直播電視服務旁邊顯示第三方輸入。開發人員 API 的承諾是用戶將能夠在其標準電視體驗中找到頻道(一旦安裝)。

內置頻道和第三方頻道之間的視覺區分是允許的,如 Android CDD 的 TV 應用部分中所定義。

以下部分顯示了直播電視應用程序如何滿足 CDD 要求。

新頻道設置

添加新的第三方輸入/頻道開始於用戶從應用商店(例如 Google Play)查找並安裝 TV Input。

一些第三方電視輸入會自動將頻道添加到 TvProvider 數據庫。然而,大多數將提供一個設置活動,使用戶能夠設置他們的頻道、提供登錄詳細信息和其他操作。系統 TV App 需要確保用戶可以激活此 Setup 活動,這就是 CDD 要求第三方輸入是遠離主 TV App 的最小導航操作的原因。

參考直播電視應用程序提供了用於訪問輸入的頻道源菜單。

前往設置
圖 8.轉到設置

轉到設置中的頻道來源
圖 9.轉到設置中的頻道來源

從列表中選擇您的來源。
圖 10.從列表中選擇您的源。

從您的來源添加頻道
圖 11.從您的來源添加頻道。

此外,在安裝新的 TvInput 後,TV App 菜單頂部會顯示通知卡,以將用戶直接帶到設置:

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

如果用戶通過通知採取行動,他們可以選擇設置他們的來源,如圖 10 所示。

請參閱定義您的電視輸入服務以了解開發人員在此領域的期望。

自定義頻道列表

設備製造商可能會提供一個 UI 來隱藏某些頻道並使用戶能夠管理他們自己的 EPG。直播電視包括此設施。

在“設置”中打開頻道列表。
圖 13.設置中打開頻道列表。

自定義您的頻道列表。
圖 14.自定義您的頻道列表。

電子節目表

第三方輸入開發人員需要確信用戶可以在所有兼容的 Android TV 設備上在一般使用期間輕鬆導航到他們的頻道。

來自第三方輸入的頻道必須作為設備標准直播電視體驗 EPG 的一部分呈現。可以使用第三方頻道的視覺分離或單獨的類別(請參閱 Android CDD 的 TV 應用部分)——關鍵是用戶能夠找到他們已安裝的頻道。

製造商必須實施 TV 應用程序以包含全球搜索請求的搜索結果,以確保最佳用戶體驗。 Live TV 提供了一個實現(參見com.android.tv.search.TvProviderSearch ),它提供來自第三方輸入(平台兼容性所需)以及內置輸入的結果。

時移

對於 Android 6.0 及更高版本的設備,TV App 必須支持 Android 框架時移 API 。此外,製造商必須在 TV App 中實現播放控件,允許用戶暫停、恢復、倒帶和快進播放。

對於支持時移的 TV Input,TV App 需要顯示播放控件。

播放控制
圖 15.播放控件

硬盤錄像機

對於 Android 7.0 及以上版本的設備,TV App 必須支持 Android 框架TV 錄製 API ,才能支持、列出和播放錄製的節目。

這允許設備製造商將其 DVR 子系統插入 TIF,並顯著減少在電視設備上啟用或集成 DVR 功能所需的集成工作。它還使第三方能夠提供可插入 Android TV 設備的售後 DVR 系統。

除了錄製直播內容,TV App 還處理資源衝突。例如,如果設備有兩個調諧器,它可以同時錄製兩個節目。如果用戶要求錄製三個,則 TV App 必須處理衝突,並且應該顯示通知或請求用戶為這些請求安排優先級。

TV 應用程序還可以實現更複雜的邏輯,例如在用戶請求錄製一集時詢問他們是否願意錄製系列中的所有未來劇集。

請參閱下圖,了解 Android TV 中可能的 DVR 實現。

Android TV 中的數字視頻錄製
圖 16. Android TV 中的數字視頻錄製

  1. TV Input Service 告訴 TV App 有多少調諧器可用,以便 TV App 可以處理可能的資源衝突。
  2. TV App 接收用戶發起的錄製電視節目的請求。
  3. TV App 將錄製時間表存儲在其內部數據庫中。
  4. 到了錄製時間時,TV 應用程序會傳遞一個請求以調諧到與錄製相關的頻道。
  5. TV Input Service 接收到這個請求,響應是否有合適的資源,並調諧到頻道。
  6. 然後 TV 應用程序將開始錄製的請求傳遞給 TV Input Manager。
  7. TV Input Service 收到此請求並開始錄製。
  8. TV Input Service 將實際視頻數據存儲在其存儲中,該存儲可以是外部存儲或云存儲。
  9. 當需要完成錄製時,TV App 會將停止錄製請求傳遞給 TV Input Manager。
  10. 一旦 TV Input Service 收到請求,它就會停止錄製並將其關聯的元數據添加到 TV Provider,以便 TV App 可以在請求時向用戶顯示錄製內容。

有關在 TV Input 服務中實現錄製功能的更多信息,請參閱此TV Recording文章。

有用的資源

  • Android CDD和記錄在案的開發人員 API 是權威參考。
  • CTS 驗證程序將 API 用作兼容性測試程序的一部分。對直播電視運行此操作可能是在第三方輸入的上下文中查看 EPG、搜索、家長控制和其他要求的有用方法。
  • 請參閱定義您的電視輸入服務以了解開發人員在此領域的期望。

家長控制

家長控制允許用戶阻止不需要的頻道和節目,但通過輸入 PIN 碼繞過阻止。

TV App、TV Input Manager 服務、TV Provider 和 TV Input 共同負責家長控制功能。

家長控制是強制性的,並且由 CTS 驗證程序覆蓋。

許多國家/地區已經定義了 TV Inputs 可以通過TVContentRating API使用的分級系統。此外,TV Inputs 可以註冊他們自己的自定義評級系統,如 CTS 驗證器測試所示,該測試引入了“虛假”評級。對於存在標準評級系統的國家/地區,鼓勵設備製造商將 TV Input Framework 家長控制與他們可能包含的任何其他機制結合起來。

電視提供商

每個頻道行都有一個COLUMN_LOCKED字段,用於在不輸入 PIN 碼的情況下鎖定特定頻道的觀看。程序字段COLUMN_CONTENT_RATING用於顯示,不用於強製家長控制。

電視輸入管理器

TV Input Manager 存儲每個被阻止TvContentRating並響應isRatingBlocked()來建議是否應該阻止具有給定評級的內容。

電視輸入

當顯示內容的等級發生變化(在節目或頻道更改時)或家長控制設置已更改(在ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED上)時,TV Input 檢查是否應阻止當前內容,方法是在 TV Input Manager 上調用isRatingBlocked() ) .如果內容應該被阻止,TV Input 會禁用音頻和視頻,並通過調用notifyContentBlocked(TvContentRating)通知 TV 應用當前內容被阻止。如果不應阻止內容,則 TV Input 會啟用音頻和視頻,並通過調用notifyContentAllowed()通知 TV App 當前內容允許。

電視應用

為了尊重家長控制 API,從而創建一個兼容的平台,系統 TV App 需要為用戶提供一種管理家長控制的方式,包括特定應用程序註冊的任何自定義評級。

當 TV Input 通知當前內容已被阻止或用戶嘗試查看被阻止的頻道時,TV 應用會顯示 PIN 碼 UI。

TV App 不直接存儲家長控制設置。當用戶更改家長控制設置時,每個被屏蔽的TvContentRating都由 TV Input Manager 存儲,而被屏蔽的頻道則由 TV Provider 存儲。

TV App 需要聲明權限android.permission.MODIFY_PARENTAL_CONTROLS才能更改家長控制設置。

鼓勵設備製造商:

  • 針對參考直播電視應用程序執行 CTS 驗證程序家長控制測試,以演示兼容性要求。
  • 使用 Live TV 應用程序作為他們自己的 TV 應用程序的參考:特別是查看ContentRatingsManagerRatingSystemsFragment源,以及它們如何處理自定義評級。

HDMI-CEC

HDMI-CEC 允許一個設備控制另一個設備,從而使單個遙控器能夠控製家庭影院中的多個設備。 Android TV 使用它來加速設置並允許通過中央 TV 應用程序遠程控制各種 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. 然後,TV 應用程序為要切換到的 TV Input 創建一個 TV Input Manager 會話,並在該會話上調用setMain
  7. TV Input Manager 會話將此信息傳遞給 HDMI TV Input。
  8. HDMI 電視輸入請求設置邊帶錶面。
  9. 設置表面時,TV Input Manager Service 會生成相應的路由控制命令返回 HDMI Control Service。

電視集成指南

廣播應用

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

  • MHEG:本機堆棧
  • 圖文電視:本機堆棧
  • HbbTV:來自 Vewd Software 的 HbbTV 解決方案

在 Android L 版本中,Android TV 期望設備製造商使用系統集成商或針對區域 TV 堆棧的 Android 解決方案,將表面傳遞給 TV 軟件堆棧,或傳遞必要的關鍵代碼以與舊堆棧交互。

以下是廣播應用程序和電視應用程序的交互方式:

  1. 電視應用程序處於焦點,接收所有鍵。
  2. TV App 將按鍵(例如紅色按鈕)傳遞給 TV Input 設備。
  3. TV Input 設備在內部與傳統 TV 堆棧集成。
  4. 在接收到激活鍵碼(例如紅色按鈕)後,TV Input 設備會激活廣播應用程序。
  5. 廣播應用程序關注 TV 應用程序並處理用戶操作。

對於語音搜索/推薦,廣播應用可能支持語音搜索的應用內搜索。