電視輸入框架

Android TV HAL 圖標

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

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

成分

Android TV 輸入框架實現包括 TV 輸入管理器。 TIF 與 TV 應用程序(無法被第三方應用程序替代的系統應用程序)配合使用,以訪問內置頻道和 IP 調諧器頻道。電視應用程序通過電視輸入管理器與設備製造商或其他方提供的電視輸入模塊進行通信。

電視輸入框架包括:

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

下面詳細介紹這些組件。請參閱下圖,了解 Android TV 輸入框架架構的詳細視圖。

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

流動

以下是該架構的運用方式:

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

權限

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

電視提供商

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

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

有關電視提供商的詳細視圖,請參見下圖。

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

只有特權系統分區中的應用程序才能讀取整個電視提供商數據庫。

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

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

數據庫字段示例

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

  • 顯示:顯示字段包含應用程序可能希望用戶可見的信息,例如頻道名稱 ( 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 讀取、寫入權限(需要用戶同意)以確定可用通道。
  • 只有signatureOrSystem應用程序可以獲得ACCESS_ALL_EPG_DATA權限來訪問整個數據庫。

電視輸入管理器

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

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

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

應用程序可以使用android.media.tv.TvInputManager創建和註冊TvInputCallback ,以便在電視輸入的狀態更改或添加或刪除電視輸入時進行回調。例如,電視應用程序可以在電視輸入斷開連接時做出反應,將其顯示為已斷開連接並阻止其選擇。

電視輸入管理器抽象了電視應用程序和電視輸入之間的通信。電視輸入管理器和電視輸入的標準接口允許多個設備製造商創建自己的電視應用程序,同時幫助所有第三方電視輸入在所有電視應用程序上工作。

電視輸入

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

某些輸入(例如 HDMI 輸入或內置調諧器輸入)只能由製造商提供,因為它們直接與底層硬件通信。其他功能,例如 IPTV、異地移位和外部 STB,可以由第三方在 Google Play 商店上以 APK 形式提供。下載並安裝後,可以在電視應用程序中選擇新的輸入。

直通輸入示例

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

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

內置調諧器示例

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

在此示例中,設備製造商提供的內置調諧器電視輸入受到信任,並且具有對電視提供商的完全訪問權限。

第三方輸入示例

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

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

通過電視輸入管理器,外部機頂盒電視輸入可以與 HDMI 電視輸入對話並要求其在 HDMI1 上顯示視頻。因此,STB 電視輸入可以控制電視,而製造商提供的 HDMI 電視輸入則可以渲染視頻。

畫中畫 (PIP) 示例

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

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

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

TV 應用程序負責了解哪個系統 TV 輸入處於活動狀態(即由用戶選擇),並消除傳入的KeyEvents並將它們路由到正確的 TV 輸入管理器會話,調用dispatchInputEvent()將事件傳遞到關聯的TV 輸入。

MHEG-5 輸入示例

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

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

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

請參閱廣播應用程序部分,了解廣播應用程序如何與電視應用程序交互。

在這個例子中:

  1. 電視應用程序處於焦點並接收所有按鍵。
  2. KeyEvents (例如紅色按鈕)作為InputEvents.
  3. 系統 TV Input 與 MHEG-5 堆棧集成,並具有RECEIVE_INPUT_EVENT系統權限。
  4. 收到激活鍵碼(例如紅色按鈕)後,電視輸入將激活廣播應用程序。
  5. 電視輸入將KeyEvents作為InputEvents進行消費,廣播應用程序是焦點並處理InputEvents直到被關閉。

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

電視輸入 HAL

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

電視應用程序

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

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

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

設置和配置

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

觀看

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

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

支持第三方電視輸入

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

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

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

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

新頻道設置

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

某些第三方電視輸入會自動將頻道添加到 TvProvider 數據庫。不過,大多數都會提供設置活動,以使用戶能夠設置其頻道、提供登錄詳細信息和其他操作。系統電視應用程序需要確保用戶可以激活此設置活動,這就是為什麼 CDD 要求第三方輸入是遠離主電視應用程序的最少導航操作。

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

前往設置
圖 8.轉到“設置”

轉到“設置”中的“頻道源”
圖 9.轉到“設置”中的“通道源”

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

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

此外,安裝新的 TvInput 後​​,電視應用程序菜單頂部會顯示通知卡,以便用戶直接進入設置:

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

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

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

自定義頻道列表

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

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

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

電子節目指南

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

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

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

時移

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

對於支持時移的電視輸入,電視應用程序需要顯示播放控件。

播放控制
圖 15.播放控件

硬盤錄像機

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

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

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

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

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

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

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

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

有用的資源

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

家長控制

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

家長控制功能的責任由電視應用程序、電視輸入管理器服務、電視提供商和電視輸入共同承擔。

家長控制是強制性的,並且由 CTS Verifier 涵蓋。

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

電視提供商

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

電視輸入管理器

TV 輸入管理器存儲每個被阻止的TvContentRating並響應isRatingBlocked()以建議是否應阻止具有給定評級的內容。

電視輸入

當顯示內容的分級已更改(節目或頻道更改時)或家長控制設置已更改(在ACTION_BLOCKED_RATINGS_CHANGEDACTION_PARENTAL_CONTROLS_ENABLED_CHANGED上)時,電視輸入會檢查是否應通過在電視輸入管理器上調用isRatingBlocked()來阻止當前內容。如果內容應該被阻止,電視輸入會禁用音頻和視頻,並通過調用notifyContentBlocked(TvContentRating)通知電視應用當前內容被阻止。如果內容不應被阻止,電視輸入將啟用音頻和視頻,並通過調用notifyContentAllowed()通知電視應用當前內容已被允許。

電視應用程序

為了遵守家長控制 API 並因此創建兼容平台,系統 TV 應用程序需要為用戶提供一種管理家長控制的方法,包括特定應用程序註冊的任何自定義收視率。

當電視輸入通知當前內容被阻止或用戶嘗試觀看被阻止的頻道時,電視應用程序會顯示 PIN 碼 UI。

TV 應用程序不直接存儲家長控制設置。當用戶更改家長控制設置時,每個被阻止的TvContentRating由電視輸入管理器存儲,並且被阻止的頻道由電視提供商存儲。

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

鼓勵設備製造商:

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

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 輸入管理器服務生成電視應用程序切換源的意圖。
  6. 然後,電視應用程序為要切換到的電視輸入創建一個電視輸入管理器會話,並在該會話上調用setMain
  7. 電視輸入管理器會話將此信息傳遞到 HDMI 電視輸入。
  8. HDMI TV 輸入請求設置邊帶錶面。
  9. 設置表面時,電視輸入管理器服務會生成相應的路由控制命令返回 HDMI 控制服務。

電視集成指南

廣播應用程序

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

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

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

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

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

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