Android 提供豐富的使用者體驗,專為在高畫質電視等大螢幕裝置上執行的應用程式進行最佳化。您可以為 Android TV 開發應用程式,藉此擴大應用程式的目標對象。本文將說明如何有效執行這項作業。
打造 TV 應用程式
TV 應用程式採用的架構與手機和平板的應用程式相同。這表示您可以根據 Android 應用程式建構知識,建立新的 TV 應用程式,或擴充現有應用程式,使其也能在電視裝置上執行。
不過,電視的使用者互動模式與手機和平板電腦裝置有很大的差異。如要讓應用程式在電視裝置上順利運作,您必須設計新的版面配置,讓使用者在 10 英尺外也能清楚理解,並提供僅使用方向鍵和選取按鈕即可操作的導覽功能。
如要進一步瞭解如何處理電視硬體控制器、建構電視版面配置,以及建立電視導覽等注意事項,請參閱「建構電視應用程式」。
使用 Media3 ExoPlayer
Jetpack Media3 提供 Player 介面,可定義播放、暫停、跳轉和顯示曲目資訊等基本功能。ExoPlayer 是 Media3 中這個介面的預設實作。
與 Android 的 MediaPlayer API 相比,ExoPlayer 更加便利,例如支援多種串流協定、預設音訊和影片轉譯器,以及處理媒體緩衝處理的元件。
您可以自訂及擴充 ExoPlayer,並透過 Play 商店應用程式更新進行更新。詳情請參閱「Media3 ExoPlayer」。
使用 Media3 MediaSession
媒體工作階段提供通用方式,讓系統與應用程式的音訊或影片播放器互動。Media3 與先前媒體 API 的主要差異之一,在於元件之間不再需要連接器。
新的 MediaSession 類別會採用任何實作 Player 介面的類別。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 類別,會實作 Player 介面。將媒體工作階段連結至播放器後,應用程式就能對外宣傳媒體播放功能,並接收來自外部來源的播放指令。媒體工作階段會將這些指令委派給媒體應用程式的播放器。
媒體工作階段是控制播放的關鍵。可將外部來源的指令轉送至播放媒體的播放器。外部用戶端可以使用媒體控制器,向媒體應用程式發出播放指令。媒體工作階段會接收這些指令,並最終將指令委派給媒體播放器。
如要進一步瞭解播放功能,例如如何自訂播放指令行為,請參閱「使用 MediaSession 控制及通告播放功能」。
避免應用程式中斷
使用 MediaSession 可避免不必要的中斷,例如:
關閉電視或切換電視輸入來源時,意外持續播放。這也會導致電視硬體耗電量增加。透過
MediaSession,應用程式可以通知平台正在播放媒體,而平台也能通知應用程式可以停止播放。切換到其他應用程式或關閉電視螢幕時,音樂會突然停止播放。使用
MediaSessionAPI 可在背景服務中持續播放。限制與內容互動,導致使用者無法控制播放。例如,如果應用程式在背景播放音樂,則返回應用程式,或支援語音指令。在應用程式中加入
MediaSession後,使用者就能使用語音指令跳轉及略過歌曲或節目。
其他注意事項
將媒體應用程式擴充至 Android 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 連接埠和內建調諧器) 和軟體來源 (例如透過網際網路串流的影片) 的直播影片內容。詳情請參閱「建構電視輸入服務」。