游戏控制器输入
亚马逊Fire TV游戏控制器(以及符合蓝牙HID游戏手柄配置文件的其他控制器)具有特定的按钮、Android运动和键事件常量。使用该信息捕获应用中的输入事件。
所有所支持的控制器按钮操作指南,请参阅控制器操作指南。有关处理Fire TV遥控器输入的信息,请参阅亚马逊Fire TV遥控器输入。
按钮
当前版本的Fire TV游戏控制器有以下按钮:

旧版本的游戏控制器有以下按钮:


捕获输入
用于亚马逊Fire TV的游戏控制器生成用于数字按钮(如A按钮)按下的Android KeyEvent事件,以及模拟控制移动(如操纵杆操作)MotionEvent事件。
可使用标准的Android事件侦听器接口和回调(onClick()、onFocusChange())处理简单的按钮输入。
如需捕获View中的特定按钮按下事件,请覆盖输入事件处理程序,如onKeyDown()。
测试KeyEvent类的输入常量,捕获特定键。例如,如需从A按钮捕获按下事件,请使用以下代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
    boolean handled = false;
    switch (keyCode){
        case KeyEvent.KEYCODE_BUTTON_A:
                // ... 处理选择
                handled = true;
                break;
     }
     return handled || super.onKeyDown(keyCode, event);
}
如需捕获动作事件,请覆盖View中的onGenericMotionEvent()事件。使用MotionEvent类中的输入常量,确定产生移动的控件,并使用MotionEvent类中的事件(如getAxisValue())确定运动的值:
@Override
public boolean onGenericMotionEvent(MotionEvent event){
    // 从左侧操纵杆获取值的变化
    float deltaX = event.getAxisValue(MotionEvent.AXIS_X);
    float deltaY = event.getAxisValue(MotionEvent.AXIS_Y);
    if (deltaX > 0.5 && deltaY > 0.5) {
        // 进行一些操作
        handled = true;
    }
    return handled || super.onGenericMotionEvent(event);
}
主输入和辅助输入事件
亚马逊Fire TV设备上的某些游戏控制器操作,对于单个动作,可能会引起多个输入事件。例如,Amazon Fire游戏控制器上的方向键是模拟定向控制(生成动作事件),但Fire TV遥控器上的方向键是数字控制(生成键事件)。
同样,在游戏控制器上选择操作是A按钮,但在Fire TV遥控器上是方向键中心按钮。亚马逊Fire TV上的某些游戏控制器操作首先引发主输入事件(通常是动作事件)。然后,若应用不处理这些事件,它们会引发第二个输入事件(通常是一个键事件)。下面的输入事件参考表中列出主输入事件和辅助输入事件。
辅助输入事件有助于简化处理游戏控制器输入过程。若应用只注重游戏控制器的按钮和方向键事件,则辅助事件可完全忽略动作事件,仅处理键事件。
同样,由于A按钮同时生成KEYCODE_BUTTON_A和KEYCODE_DPAD_CENTER,若应用支持Fire TV遥控器上的中心方向键按钮,不必同时测试A按钮。
请注意,若未正确处理主输入事件,应用可能犹如在接收到双重输入的情况下进行操作。若已捕获并处理事件,请确保输入事件处理程序返回true。若已捕获第一个输入事件,则不会生成辅助输入事件。
输入事件参考
下表列出每个游戏控制器按钮的动作和键事件常量、所建议的按钮用户体验性能、以及亚马逊Fire TV用户界面中按钮的默认性能。
数字按钮报告键事件(KeyEvent),模拟控件报告动作事件(MotionEvent)。请参阅(../fire-tv/controller-behavior-guidelines.html),了解有关所建议的应用中控制器输入操作的信息。
若应用不处理主事件,则除MotionEvent或KeyEvent列中的事件外,还会引发“辅助事件”列中列出的事件。有关辅助事件的信息,请参阅“主输入和辅助输入事件”(上文)。
在下表中,游戏是一个提交到亚马逊应用商店游戏类别的应用,并从亚马逊应用商店安装到设备上。
| 游戏控制器按钮 | 动作事件 | 键事件 | 辅助事件 | 默认行为 | 
|---|---|---|---|---|
| 主页 | 无 | 无 | 无 | 对于游戏,显示“游戏已暂停”对话框。对于所有其他应用,将用户返回到主页。 | 
| 后退 | 无 | KEYCODE_BACK | 
      无 | 将用户返回到上一个操作或屏幕(活动)。 | 
| 菜单 | 无 | KEYCODE_MENU | 
      无 | 调用Android上下文菜单(OptionsMenu)。 | 
| A | 无 | KEYCODE_BUTTON_A | 
      KEYCODE_DPAD_CENTER | 
      选择具有当前焦点的项目。 | 
| B | 无 | KEYCODE_BUTTON_B | 
      KEYCODE_BACK | 
      返回到上一个屏幕(活动)(与“后退”返回相同)。 | 
| X | 无 | KEYCODE_BUTTON_X | 
      无 | 不进行任何操作。 | 
| Y | 无 | KEYCODE_BUTTON_Y | 
      无 | 不进行任何操作。 | 
| 向左(方向键)向右(方向键) | AXIS_HAT_X(>0为向右) | 
      无 | KEYCODE_DPAD_LEFT KEYCODE_DPAD_RIGHT | 
      在用户界面中向左或向右移动焦点。 | 
| 向上(方向键)向下(方向键) | AXIS_HAT_Y(>0为向下) | 
      无 | KEYCODE_DPAD_UP KEYCODE_DPAD_DOWN | 
      在用户界面中向上或向下移动焦点。 | 
| 左摇杆(向左/向右) | AXIS_X(>0为向右) | 
      无 | KEYCODE_DPAD_LEFT KEYCODE_DPAD_RIGHT(如果移动>.5) | 
      向指定方向移动用户界面中的焦点。 | 
| 左摇杆(向上/向下) | AXIS_Y(>0为向下) | 
      无 | KEYCODE_DPAD_UP KEYCODE_DPAD_DOWN(如果移动>.5) | 
      向指定方向移动用户界面中的焦点。 | 
| 左摇杆按下 | 无 | KEYCODE_BUTTON_THUMBL | 
      无 | 播放/暂停。 | 
| 右摇杆(向左/向右) | AXIS_Z(>0为向右) | 
      无 | 无 | 不进行任何操作。 | 
| 右摇杆(向上/向下) | AXIS_RZ(>0为向下) | 
      无 | 无 | 不进行任何操作。 | 
| 右摇杆按下 | 无 | KEYCODE_BUTTON_THUMBR | 
      无 | 播放/暂停。 | 
| 播放/暂停(仅限第1代Fire游戏控制器) | 无 | KEYCODE_MEDIA_PLAY_PAUSE | 
      无 | 播放/暂停。 | 
| 倒回(仅限第1代Fire游戏控制器) | 无 | KEYCODE_MEDIA_REWIND | 
      无 | 倒回。 | 
| 快进(仅限第1代Fire游戏控制器) | 无 | KEYCODE_MEDIA_FAST_FORWARD | 
      无 | 快进。 | 
| 左触发器(L2) | AXIS_BRAKE | 
      无 | 无 | 调高音量。 | 
| 左肩(L1) | 无 | KEYCODE_BUTTON_L1 | 
      无 | 倒回。 | 
| 右触发器(R2) | AXIS_GAS | 
      无 | 无 | 调低音量。 | 
| 右肩(R1) | 无 | KEYCODE_BUTTON_R1 | 
      无 | 快进。 | 
Last updated: 2020年10月29日

