游戏控制器输入
亚马逊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日