將媒體應用程式擴充至 Android TV

Android 提供豐富的使用者體驗,針對大螢幕裝置 (例如高畫質電視) 上執行的應用程式進行最佳化。您可以為 Android TV 開發應用程式,擴大應用程式的目標對象。本文件將說明如何有效執行這項操作。

打造 TV 應用程式

TV 應用程式採用的架構與手機和平板的應用程式相同。這個方法表示您可以根據已知的 Android 應用程式建構方式,建立新的 TV 應用程式,或是擴充現有應用程式,讓其在 TV 裝置上執行。

不過,電視的使用者互動模式與手機和平板電腦的使用者互動模式截然不同。為了讓應用程式在電視裝置上大獲成功,您必須設計新的版面配置,讓使用者在 10 英尺 (約 3 公尺) 外就能清楚瞭解,並提供只需方向鍵和選取按鈕即可使用的導覽功能。

如要進一步瞭解如何處理電視硬體控制器、建構電視版面配置和建立電視導覽等考量事項,請參閱「建構電視應用程式」。

使用 Media3 ExoPlayer

Jetpack Media3 提供 Player 介面,可定義基本功能,例如播放、暫停、跳轉和顯示曲目資訊。ExoPlayer 是 Media3 中此介面的預設實作方式。

與 Android 的 MediaPlayer API 相比,它提供了更多便利功能,例如支援多個串流通訊協定、預設的音訊和視訊轉譯器,以及處理媒體緩衝的元件。

您可以自訂及擴充 ExoPlayer,並透過 Play 商店應用程式更新功能更新 ExoPlayer。詳情請參閱「Media3 ExoPlayer」。

使用 Media3 MediaSession

媒體工作階段提供通用方式,讓系統與應用程式的音訊或影片播放器互動。Media3 與先前媒體 API 的差異之一,在於元件之間不再需要連接器。

新的 MediaSession 類別會採用任何實作 Player 介面的類別。ExoPlayer 和 MediaController 都是實作該介面的類別。這樣一來,元件之間的互動就會變得簡單許多。詳情請參閱「Player 介面」。

如要進一步瞭解如何建立媒體播放應用程式,請參閱「使用 ExoPlayer 建立基本媒體播放器」。

為了讓媒體應用程式的使用者獲得最佳體驗,您必須實作 MediaSession。如要這麼做,請初始化 Player,並將其提供給 MediaSession.Builder,如下所示:

Kotlin

val player = ExoPlayer.Builder(context).build()
val mediaSession = MediaSession.Builder(context, player).build()

Java

ExoPlayer player = new ExoPlayer.Builder(context).build();
MediaSession mediaSession = new MediaSession.Builder(context, player).build();

自動狀態處理

Media3 程式庫會使用播放器的狀態,自動更新媒體工作階段。因此,您不需要手動處理玩家與工作階段的對應關係。這有助於確保使用者一律能看到播放媒體的最新資訊,包括「聽聲辨曲」資訊卡

控制及宣傳播放功能

在 Media3 中,預設播放器是 ExoPlayer 類別,可實作 Player 介面。將媒體工作階段連結至播放器,可讓應用程式在外部宣傳媒體播放,並接收來自外部來源的播放指令。媒體工作階段會將這些指令委派給媒體應用程式的播放器。

媒體工作階段是控制播放的關鍵。可讓您將來自外部來源的指令,轉送至負責播放媒體的播放器。外部用戶端可以使用媒體控制器向媒體應用程式發出播放指令。這些指令會由媒體工作階段接收,最終將指令委派給媒體播放器。

如要進一步瞭解播放功能,例如如何自訂播放指令行為,請參閱「使用 MediaSession 控制及通告播放功能」。

避免應用程式中斷

使用 MediaSession 可避免不必要的干擾,例如:

  • 關閉電視或切換電視輸入時,影片會持續播放。這也會導致電視硬體耗電量增加。有了 MediaSession,您的應用程式就能通知平台正在播放媒體,而平台也能通知應用程式停止播放。

  • 在切換應用程式或關閉電視螢幕時,音樂播放會意外停止。使用 MediaSession API 可在背景服務中繼續播放。

  • 限制與內容互動:使用者無法控制播放功能。舉例來說,如果應用程式在背景播放音樂或支援語音指令,則會返回應用程式。在應用程式中使用 MediaSession 後,使用者就能使用語音指令尋找及略過歌曲或節目。

其他考量

將媒體應用程式擴充至 Android TV 時,您需要考量無障礙問題、如何提高使用者參與度、如何讓使用者找到內容,以及如何建構遊戲和電視輸入服務。

電視無障礙功能

雖然輔助技術確實能協助低視力使用者,但在電視應用程式的內容探索歷程中,支援無障礙功能也相當重要。

舉例來說,請特別留意提供導覽指引,並正確標示元素,確保電視應用程式可與 TalkBack 等無障礙功能搭配使用。這些步驟可大幅改善視障使用者的體驗。

提升無障礙功能的第一步,就是提高使用者對無障礙功能的認知。如要進一步瞭解文字縮放、鍵盤版面配置和音訊說明,請參閱無障礙資源

在 Google TV 上提高參與度的最佳做法

所有專為 Android TV 建構的應用程式都能在搭載 Google TV 的裝置上運作。為在 Google TV 上提供最佳使用體驗,建議您採用下列最佳做法。

您必須使用 MediaSession,才能提供與音訊或影片播放器互動的通用方式。如要進一步瞭解如何實作這項功能,請參閱「使用 Media3 MediaSession」。

應用程式必須支援 Google Cast,這項功能可讓您擴充 Android、iOS 和 Chrome 應用程式,讓音訊和視訊串流至 Android TV、Chromecast 裝置和 Google 助理裝置。詳情請參閱 Google Cast 說明文件

您也可以協助使用者:

  • 透過提供媒體動作動態饋給或整合「接著看」功能,在多個介面上探索內容

  • 善用語音和互動功能,支援帳戶連結和授權同步、提供語音投放功能,並啟用 Cast Connect。

  • 整合 Google Play 結帳系統,提供無縫訂閱服務,讓使用者輕鬆付款

建構電視輸入架構

觀看直播電視節目和其他持續播放的頻道內容,是電視體驗的重要一環。使用者習慣透過頻道瀏覽功能,在電視上選取及觀看節目。TV Input Framework 會建立頻道,以便在電視節目指南中發布影片或音樂內容。

TV Input Framework 提供統一方法,可接收及播放來自硬體來源 (例如 HDMI 連接埠和內建調諧器) 的即時影像內容,以及來自軟體來源 (例如透過網際網路串流的影片) 的內容。詳情請參閱「建構電視輸入服務」。