开发者控制台

游戏控制器输入

游戏控制器输入

Amazon Fire TV游戏控制器(以及符合蓝牙HID游戏手柄配置文件的其他控制器)具有特定的按钮、Android运动和键事件常量。使用该信息捕获应用中的输入事件。

所有所支持的控制器按钮操作指南,请参阅《控制器操作指南》。有关处理Fire TV遥控器输入的信息,请参阅《Amazon Fire TV遥控器输入》

按钮

当前版本的Fire TV游戏控制器有以下按钮:

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

捕获输入

用于Amazon 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);
}

主输入和辅助输入事件

Amazon Fire TV设备上的某些游戏控制器操作,对于单个动作,可能会引起多个输入事件。例如,Amazon Fire游戏控制器上的方向键是模拟定向控制(生成动作事件),但Fire TV遥控器上的方向键是数字控制(生成键事件)。

同样,在游戏控制器上选择操作是A按钮,但在Fire TV遥控器上是方向键中心按钮。Amazon Fire TV上的某些游戏控制器操作首先引发主输入事件(通常是动作事件)。然后,若应用不处理这些事件,它们会引发第二个输入事件(通常是一个键事件)。下面的“输入事件参考表”中列出主输入事件和辅助输入事件。

辅助输入事件有助于简化处理游戏控制器输入过程。若应用只注重游戏控制器的按钮和方向键事件,则辅助事件可完全忽略动作事件,仅处理键事件。

同样,由于A按钮同时生成KEYCODE_BUTTON_AKEYCODE_DPAD_CENTER,若应用支持Fire TV遥控器上的中心方向键按钮,不必同时测试A按钮。

请注意,若未正确处理主输入事件,应用可能犹如在接收到双重输入的情况下进行操作。若已捕获并处理事件,请确保输入事件处理程序返回true。若已捕获第一个输入事件,则不会生成辅助输入事件。

输入事件参考

下表列出每个游戏控制器按钮的动作和键事件常量、所建议的按钮用户体验性能、以及Amazon Fire TV用户界面中按钮的默认性能。

数字按钮报告键事件(KeyEvent),模拟控件报告动作事件(MotionEvent)。请参阅(../fire-tv/controller-behavior-guidelines.html),了解有关所建议的应用中控制器输入操作的信息。

若应用不处理主事件,则MotionEventKeyEvent列中的事件外,还会引发“辅助事件”列中列出的事件。有关辅助事件的信息,请参阅“主输入和辅助输入事件”(上文)。

在下表中,游戏是一个提交到亚马逊应用商店游戏类别的应用,并从亚马逊应用商店安装到设备上。

游戏控制器按钮 动作事件 键事件 辅助事件 默认行为
主页 对于游戏,显示“游戏已暂停”对话框。对于所有其他应用,将用户返回到主页。
后退 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 快进。