前言
功能需要,获取物理手柄数据(本文章只针对处于Android模式的手柄),然后转换成云需要的数据。手柄数据主要分为两款,一个是轴数据,一个是按键数据,下面分别来说明。
判断是否是手柄设备
public static boolean isJoyStick(InputEvent event) {
boolean sourceJoy = (event.getSource() & InputDevice.SOURCE_JOYSTICK) ==
InputDevice.SOURCE_JOYSTICK || (event.getSource() & InputDevice.SOURCE_GAMEPAD) ==
InputDevice.SOURCE_GAMEPAD;
boolean hasJoyMotion = event.getDevice().getMotionRange(MotionEvent.AXIS_X) != null && event.getDevice().getMotionRange(MotionEvent.AXIS_Y) != null;
return sourceJoy && hasJoyMotion;
}
一是判断是否还有左滚轴,二是判断是否来源是手柄,至于为什么判断是否包含左滚轴,因为市面上很多遥控器都有轴且设备源包含手柄。加上左滚轴判断可以更精确。
按键数据
按键数据可通过dispatchKeyEvent or onKeyDown,onKeyUp获得,手柄数据如下:
- KeyEve