管理 TV 遙控器

電視裝置需要使用次要硬體裝置才能與應用程式互動。 遠端控制器或遊戲控制器因此,您的應用程式必須支援方向鍵 (D-Pad) 輸入功能。 此外,應用程式可能需要處理離線的控制器,以及多個來源的輸入資料 控制器類型

本指南說明處理電視裝置控制器的規定。

D-Pad 最小控制項

電視裝置的預設控制器是 D-Pad。一般來說,您的應用程式必須能在 只有上、下、左、右、選取、返回和主畫面按鈕的遙控器。如果您的應用程式 這款遊戲通常需要使用遊戲控制器和額外的控制選項 嘗試以只有這些 D-Pad 控制器來支援遊戲玩法否則,請警告使用者 需要控制器,並讓他們使用 D-Pad 控制器優雅退出遊戲。

如要進一步瞭解如何在電視裝置上使用 D-Pad 控制器進行瀏覽,請參閱 電視導航

處理控制器中斷連線

電視控制器通常是藍牙裝置,可能會定期嘗試節省電力 進入休眠模式,然後中斷與電視裝置的連線。這表示應用程式 在未設定處理這些重新連接事件的情況下中斷或重新啟動。這些活動 會發生下列情況:

  • 播放持續數分鐘的影片時,D-Pad 或遊戲 遙控器可能會進入休眠模式、中斷與電視裝置的連線,等之後重新連線。
  • 在遊戲過程中,新玩家可能會使用 尚未連線。
  • 在遊戲過程中,玩家可能會離開遊戲,並中斷遊戲控制器的連線。

任何需要中斷連線和重新連線事件的電視應用程式活動,都必須設為 處理應用程式資訊清單中重新連線事件。以下程式碼範例示範如何 讓活動處理設定變更,包括鍵盤或導覽裝置 正在連線、中斷連線或重新連線:

<activity
  android:name="com.example.android.TvActivity"
  android:label="@string/app_name"
  android:configChanges="keyboard|keyboardHidden|navigation"
  android:theme="@style/Theme.Leanback">

  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  </intent-filter>
  ...
</activity>

這項設定變更可讓應用程式繼續透過重新連線執行 事件,而不是由 Android 架構重新啟動, 良好的使用者體驗

處理 D-Pad 的輸入變化版本

電視裝置使用者可能會擁有多種類型的控制器,以便與電視搭配使用。適用對象 舉例來說,使用者可能同時擁有基本的 D-Pad 控制器和遊戲控制器。按鍵碼 提供的 D-Pad 功能可能會與遊戲控制器不同。 存取碼。

處理 D-Pad 輸入中的變化版本,讓使用者不 必須切換控制器才能運作應用程式深入瞭解如何處理 輸入變化版本,請參閱 處理方向鍵輸入作業

處理按鈕事件

當使用者按一下控制器上的按鈕時,應用程式會收到含有 KeyEvent。預期的是 按鈕行為可能是播放、暫停或停止等媒體事件,也可能是電視類型的事件 (例如 選取或瀏覽為提供良好的使用者體驗,請指派一致的 控制器按鈕的行為

電視 UI 事件

將 TV UI 行為指派給產生 KeyEvent 的按鈕 類型,如下表所示:

KeyEvent行為
KEYCODE_BUTTON_BKEYCODE_BACK返回
KEYCODE_BUTTON_SELECTKEYCODE_BUTTON_AKEYCODE_ENTERKEYCODE_NUMPAD_ENTERKEYCODE_DPAD_CENTER選項
KEYCODE_DPAD_UPKEYCODE_DPAD_DOWNKEYCODE_DPAD_LEFTKEYCODE_DPAD_RIGHT導覽

媒體事件

使用者觀看媒體時,為產生的按鈕指派行為 KeyEvent 類型,如下表所示。如果應用程式 MediaSession、 使用 MediaControllerAdapter 呼叫其中一項 MediaControllerCompat.TransportControls 方法。請注意,選取按鈕的作用是「播放」或「暫停」 按鈕。

KeyEventTransportControls 呼叫行為
BUTTON_SELECTBUTTON_AENTERKEYCODE_NUMPAD_ENTERDPAD_CENTER play()播放
BUTTON_STARTBUTTON_SELECTBUTTON_AENTERDPAD_CENTERKEYCODE_NUMPAD_ENTER pause()暫停
BUTTON_R1skipToNext()跳到下一個
BUTTON_L1skipToPrevious()跳到上一個
DPAD_RIGHTBUTTON_R2AXIS_RTRIGGERAXIS_THROTTLEfastForward()快轉
DPAD_LEFTBUTTON_L2AXIS_LTRIGGERAXIS_BRAKErewind()倒轉
stop()停止

注意:使用 MediaSession 時,請勿覆寫 媒體專用按鈕,例如 KEYCODE_MEDIA_PLAY。 或 KEYCODE_MEDIA_PAUSE。 系統會自動觸發適用的 MediaSession.Callback敬上 方法。

提供適當的返回按鈕行為

「返回」按鈕不得當做切換鈕。例如,請勿將此程式同時用於開啟和關閉 或前往 Google 試算表選單只能用於在先前的播放器中往回瀏覽導覽標記樣式 已開啟。

由於「返回」按鈕只會執行線性、返回瀏覽,因此您可以使用 讓另一個按鈕開啟應用程式內選單,並返回應用程式。 連續按下返回按鈕必須一律導向 Android TV 主畫面。 例如:遊戲 >遊戲暫停畫面 >遊戲主畫面 >Android TV 主畫面或 電視節目播放 >TV 應用程式主畫面 >Android TV 主畫面。

如需更多關於導覽設計的資訊,請參閱 設計返回和向上瀏覽功能。如要瞭解導入程序,請參閱 提供適當的返回瀏覽功能

處理遊戲控制器

支援 D-Pad 控制項

規劃 D-Pad 控制器的控製配置,因為這個控制項是 Android TV 裝置的預設選項。播放器必須能用 D-Pad 來處理 遊戲,不僅控制核心遊戲體驗,還包括瀏覽選單和廣告。因此 請確保 Android TV 遊戲不會參照含有以下語言的觸控介面: 「輕觸這裡繼續。」

玩家如何與遊戲控制器互動,是達成優質玩家的關鍵 無須專人管理建議你採取下列最佳做法:

  • 預先說明控制器需求:參閱 Google Play 的說明 向玩家說明任何對控制器的期望。如果遊戲更適合 如果遊戲搖桿與只有 D-Pad 的搖桿不同,看起來會明顯明顯。如果使用 不適合的控制器可能會有不佳的遊戲體驗 導致遊戲的評分不佳
  • 使用一致的按鈕對應:直覺易用的按鈕對應是關鍵 以便提供良好的使用者體驗例如,使用「目標對象」按鈕 接受,使用 B 取消按鈕。您也可以提供彈性空間 達成重塑性的目標如果想進一步瞭解按鈕對應,請參閱「控制代碼」一文 控制器動作
  • 偵測控制器功能,並做出相應調整:查詢控制器 最佳化控制器和遊戲的配對。例如: 你可能會想讓玩家在空中揮動控制器來指揮物件 但 播放器的控制器沒有加速計和陀螺儀硬體,因此揮手沒有作用。 查詢控制器;如果未啟用動作偵測 並切換至可用的替代控製配置。如要進一步瞭解 有關查詢控制器的功能,請參閱支援 控制器

使用適當的按鈕

並非所有遊戲控制器都有提供開始、搜尋或選單按鈕。確保 UI 不會依賴 提供錯誤資訊

處理多個控制器

如果有多位玩家在玩遊戲,而且每個玩家都有自己的控制器,就必須 對應每個玩家與控制器組合如要瞭解如何實作控制器號碼 識別,請參閱 getControllerNumber()

處理控制器中斷連線

控制器在遊戲過程中中斷連線時,請暫停遊戲並顯示 對話方塊,提示已中斷連線的玩家重新連結控制器。

此外,請在對話方塊中提供疑難排解提示。舉例來說, 顯示「請檢查您的藍牙連線狀態」。進一步瞭解如何實作輸入裝置 支援,請參閱處理控制器 動作藍牙總覽

顯示控制器操作說明

如果您的遊戲提供視覺遊戲控制指示,請使用 控制器圖片不含品牌宣傳元素,且僅包含與 Android 相容的按鈕

如需 Android 相容控制器的範例圖片,請下載 Android TV 遊戲手把範本 (ZIP)。 在黑色背景中包含一個白色控制器,以及一個白色的黑色控制器 背景,如圖 1 所示,作為 PNG 檔案和 Adobe® Illustrator® 檔案。

圖 1. 使用 Android TV 遊戲手把範本。