電視裝置需要使用次要硬體裝置才能與應用程式互動。 遠端控制器或遊戲控制器因此,您的應用程式必須支援方向鍵 (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_B 、KEYCODE_BACK | 返回 |
KEYCODE_BUTTON_SELECT 、KEYCODE_BUTTON_A 、KEYCODE_ENTER 、
KEYCODE_NUMPAD_ENTER 和 KEYCODE_DPAD_CENTER | 選項 |
KEYCODE_DPAD_UP 、KEYCODE_DPAD_DOWN 、KEYCODE_DPAD_LEFT 、
KEYCODE_DPAD_RIGHT | 導覽 |
媒體事件
使用者觀看媒體時,為產生的按鈕指派行為
KeyEvent
類型,如下表所示。如果應用程式
MediaSession
、
使用 MediaControllerAdapter
呼叫其中一項 MediaControllerCompat.TransportControls
方法。請注意,選取按鈕的作用是「播放」或「暫停」
按鈕。
KeyEvent | TransportControls 呼叫 | 行為 |
---|---|---|
BUTTON_SELECT 、BUTTON_A 、ENTER 、
KEYCODE_NUMPAD_ENTER 和 DPAD_CENTER |
play() | 播放 |
BUTTON_START 、BUTTON_SELECT 、BUTTON_A 、
ENTER 、DPAD_CENTER 、KEYCODE_NUMPAD_ENTER |
pause() | 暫停 |
BUTTON_R1 | skipToNext() | 跳到下一個 |
BUTTON_L1 | skipToPrevious() | 跳到上一個 |
DPAD_RIGHT 、BUTTON_R2 、AXIS_RTRIGGER 、
AXIS_THROTTLE | fastForward() | 快轉 |
DPAD_LEFT 、BUTTON_L2 、AXIS_LTRIGGER 、
AXIS_BRAKE | rewind() | 倒轉 |
無 | 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® 檔案。
![](https://developer.android.com/static/images/games/game-controller-buttons_2x.png?authuser=9&hl=zh-tw)
圖 1. 使用 Android TV 遊戲手把範本。