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

Android 提供豐富的使用者體驗,專為在大螢幕裝置 (例如高畫質電視) 上執行的應用程式進行最佳化處理。開發 Android TV 專屬應用程式,可拓展應用程式的目標對象。本文件提供如何有效執行這項作業的指引。

打造 TV 應用程式

TV 應用程式採用的架構與手機和平板的應用程式相同。也就是說,您可以根據對 Android 建構應用程式的既有知識建立新的 TV 應用程式,也可以將現有應用程式擴充為同樣在 TV 裝置上執行。

不過,電視的使用者互動模型與手機和平板電腦裝置有極大差異。為了讓您的應用程式在 TV 裝置上獲得成功,您必須設計新的版面配置,且該版面配置在 10 英尺遠可清楚顯示,且提供僅適用於方向鍵和選取按鈕的導覽功能。

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

使用 Media3 ExoPlayer

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

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

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

使用 Media3 MediaSession

媒體工作階段可讓系統與應用程式的音訊或影片播放器互動。區分 Media3 與先前的媒體 API 的主要特性之一,就是不再需要元件之間的連接器。

新的 MediaSession 類別採用實作玩家介面的任何類別。ExoPlayer 和 MediaController 都是實作該介面的類別。這樣元件之間的互動就會更輕鬆。詳情請參閱播放器介面

如要進一步瞭解如何建立媒體播放應用程式,請參閱「使用 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 類別。將媒體工作階段連結至播放器,可讓應用程式在外部投放媒體,並從外部來源接收播放指令。媒體工作階段會將這些指令委派給媒體應用程式的播放器。

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

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

避免應用程式服務中斷

使用 MediaSession 可避免不必要的服務中斷,例如:

  • 在關閉電視或切換電視輸入來源時,會意外繼續播放。這也會導致電視硬體的耗電量高。應用程式可使用 MediaSession 通知平台正在播放媒體,平台也能通知應用程式可停止播放。

  • 當您退出應用程式或關閉電視螢幕時,音樂會無預警停止播放。使用 MediaSession API 可讓您在背景服務中繼續播放。

  • 與內容受限的互動,禁止使用者控製播放。例如,在背景播放音樂或支援語音指令時,返回應用程式。在您的應用程式中,藉由 MediaSession 讓使用者可以使用語音指令跳轉及略過歌曲或劇集。

其他注意事項

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

電視無障礙功能

雖然輔助技術可以協助低視能使用者,但對於 TV 應用程式內容探索歷程而言,輔助無障礙功能至關重要。

舉例來說,請特別留意提供導覽指引和適當加上標籤的元素,並確保 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 帳款服務並提供順暢的訂閱項目,讓付款更輕鬆

建構電視輸入架構

觀看直播電視節目和其他不間斷的頻道內容,是電視服務的重要元素。使用者習慣透過瀏覽頻道的方式 選取和觀看電視的節目電視輸入架構會建立頻道,以便在電視節目節目指南中發布構想或音樂內容。

電視輸入架構提供了整合式方法,可用來接收及播放來自硬體來源的即時影片內容,例如 HDMI 通訊埠和內建調音器,以及軟體來源 (例如透過網際網路串流播放的影片)。詳情請參閱「建構電視輸入服務」。