Android Studio TV开发教程(二)管理电视控制器
Android Studio TV開發教程
(轉自Android官網https://developer.android.com/training/tv/start)
文章源自:光谷佳武 https://blog.csdn.net/jiawuhan/article/details/80618879
管理電視控制器
電視設備需要一個輔助硬件設備來與應用程序進行交互,形式為基本的遙控器或游戲控制器。?這意味著您的應用必須支持D-pad輸入。?這也意味著你的應用程序可能需要處理離線的控制器,以及來自多種類型的控制器的輸入。
本課討論處理電視設備控制器的要求。
D-pad最低限度的控制
電視設備的默認控制器是D-pad。?一般來說,您的應用程序應該可以從僅具有上,下,左,右,選擇,后退和主頁按鈕的遙控器操作。?如果您的應用程序是通常需要帶有附加控件的游戲控制器的游戲,則您的應用程序應嘗試使用這些D-pad控件進行游戲。?在這種情況下,您的應用程序還應警告用戶需要控制器,并允許他們使用D-pad控制器優雅地退出游戲。?有關使用電視設備的D-pad控制器進行導航的更多信息,請參閱創建電視導航?。
手柄控制器斷開連接
電視控制器通常是藍牙設備,它可能會嘗試通過定期進入睡眠模式和斷開電視設備來節省電量。?這意味著如果應用程序未配置為處理這些重新連接事件,則可能會中斷或重新啟動應用程序。?這些事件可能發生在以下任何情況下:
- 在觀看幾分鐘長的視頻時,D-Pad或游戲控制器進入睡眠模式,斷開與電視設備的連接,然后重新連接。
- 在游戲過程中,新玩家使用當前未連接的游戲控制器加入游戲。
- 在游戲過程中,玩家離開游戲并斷開游戲控制器。
任何可能斷開和重新連接事件的TV應用程序活動都必須配置為處理應用程序清單中的重新連接事件。?以下代碼示例演示了如何啟用活動來處理配置更改,包括連接,斷開連接或重新連接的鍵盤或導航設備:
<activityandroid: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發送的鍵碼不同。
你的應用程序應該處理來自游戲控制器的D-pad輸入的變化,所以用戶不必物理地切換控制器來操作你的應用程序。?有關處理這些輸入變化的更多信息,請參閱處理控制器操作?。
處理按鈕事件
當用戶點擊控制器上的按鈕時,您的應用會收到一個帶有KeyEvent的事件。?該按鈕的預期行為可能是媒體事件(如播放,暫停或停止),也可能是電視類型的事件(如選擇或導航)。?為了提供良好的用戶體驗,您的應用應該為控制器按鈕分配一致的行為。
電視用戶界面事件
生成這些KeyEvent的按鈕應該由應用根據下表處理。
| BUTTON_B,BACK | 背部 |
| BUTTON_SELECT,BUTTON_A,ENTER,DPAD_CENTER,KEYCODE_NUMPAD_ENTER | 選擇 |
| DPAD_UP,DPAD_DOWN,DPAD_LEFT,DPAD_RIGHT | 導航 |
媒體活動
當用戶正在觀看媒體時,生成這些KeyEvent的按鈕應按照下表處理。?如果您的應用程序正在控制MediaSession,它應該調用其中一個TransportControls方法,如下所示。?請注意,選擇按鈕在這種情況下充當播放/暫停按鈕。
| BUTTON_SELECT,BUTTON_A,ENTER,DPAD_CENTER, KEYCODE_NUMPAD_ENTER | pause() | 玩 |
| 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() | 倒帶 |
| (沒有KeyEvent與Stop關聯) | stop() | 停止 |
處理游戲的控制器
支持D-pad控制
由于此控件集是Android TV設備的默認設置,因此圍繞方向鍵盤(D-pad)控件規劃控制方案。?玩家需要能夠在游戲的各個方面使用D-Pad,而不僅僅是控制核心游戲玩法,還需要導航菜單和廣告。?出于這個原因,您還應該確保您的Android TV游戲不涉及觸摸界面。?例如,Android TV游戲不應該告訴玩家“?點擊此處繼續”。
如何塑造播放器與控制器的交互可能是實現卓越用戶體驗的關鍵:
- 預先溝通控制器要求?。?使用您的Google Play說明與玩家溝通對控制器的任何期望。?如果一個游戲比一個只有一個D-pad的游戲手柄更適合于游戲手柄,請明確說明這一點。?使用不合適的控制器進行游戲的玩家很可能會有次級體驗,并在評分中懲罰您的游戲。
- 使用一致的按鈕映射?。?直觀靈活的按鈕映射是獲得良好用戶體驗的關鍵。?例如,您應該使用A按鈕接受?,并按下B按鈕取消?,以遵守接受的海關。?您還可以提供可重新映射形式的靈活性。?有關按鈕映射的更多信息,請參閱處理控制器操作?。
- 檢測控制器功能并據此進行調整?。?向控制器查詢其功能以優化控制器和游戲之間的匹配。?例如,您可能希望玩家通過在空中揮動控制器來引導物體。?如果玩家的控制器缺乏加速計和陀螺儀硬件,揮手將無法工作。?所以,你的游戲應該查詢控制器,如果不支持運動檢測,切換到另一種可用的控制方案。?有關查詢控制器功能的更多信息,請參閱Android版本的支持控制器?。
提供適當的后退按鈕行為
后退按鈕不應該充當切換。?例如,不要用它來打開和關閉菜單。?它應該僅通過前一個屏幕(例如:游戲玩法>游戲暫停屏幕>游戲主屏幕> Android主屏幕)向后導航,即面包屑式。
由于后退按鈕只應執行線性(向后)導航,因此您可以使用后退按鈕離開游戲內菜單(由不同的按鈕打開)并返回游戲狀態。?有關導航設計的更多信息,請參閱導航?。?要了解實施情況,請參閱提供適當的后退導航?。
使用適當的按鈕
并非所有游戲控制器都提供開始,搜索或菜單按鈕。?確保你的用戶界面不依賴于這些按鈕的使用。
處理多個控制器
當多個玩家正在玩一個游戲時,每個玩家都有自己的控制器,因此映射每個玩家 - 控制器對非常重要。?有關如何實現控制器編號標識的信息,請參閱getControllerNumber()?。
手柄控制器斷開連接
當游戲過程中控制器斷開連接時,游戲應該暫停,并且會出現一個對話框,提示斷開的玩家重新連接他或她的控制器。
該對話框還應提供故障排除提示(例如,彈出對話框告訴玩家“檢查您的藍牙連接”)。?有關實現輸入設備支持的更多信息,請參閱處理控制器操作?。?有關藍牙連接的特定信息位于藍牙?。
顯示控制器說明
如果您的游戲提供視覺游戲控制指令,則控制器圖像應該沒有品牌,并且只包含與Android兼容的按鈕?。
有關Android兼容控制器的示例圖像,請下載Android TV游戲板模板(ZIP)?。?它包括黑色背景上的白色控制器和白色背景上的黑色控制器(如圖1所示),作為PNG文件和Adobe?Illustrator?文件。
圖1.使用Android TV游戲板模板(ZIP)的示例控制器說明。
總結
以上是生活随笔為你收集整理的Android Studio TV开发教程(二)管理电视控制器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysqldump参数解析大全
- 下一篇: 【柔性制造】工业机器人实现柔性制造离不开