0

我必须使用InputDevice .getSources() 方法来确定 InputDevice 的类型(源)。但它不是返回一个预定的整数,而是返回一个组合的位域,例如:16786707(这是我游戏手柄的实际值)。

如您所见,InputDevice文档页面中未列出 16786707,因为它是动态生成的。如何解析数字 16786707 以确定 InputDevice 是否为:SOURCE_CLASS_JOYSTICK (16)、SOURCE_GAMEPAD (1025) 或SOURCE_JOYSTICK (16777232)。我的目标是在初始化方法中确定 InputDevice 是像 Xbox 360 游戏手柄还是任何其他游戏手柄这样的游戏手柄。

4

1 回答 1

1
                bytes          int        name
-------------------------------------------------------------
1000000000010010100010011  //16786707 <- Device
                    10000  //16       <- SOURCE_CLASS_JOYSTICK
              10000000001  //1025     <- SOURCE_GAMEPAD
1000000000000000000010000  //16777232 <- SOURCE_JOYSTICK

该设备是一个 GamePad、一个操纵杆和一个 class_joystick(猜想这意味着它是一个操纵杆)。

您需要使用 AND 来检查:

int device = 16786707;
boolean is_source_class_joystick = ((device & SOURCE_CLASS_JOYSTICK) == SOURCE_CLASS_JOYSTICK);
boolean is_source_gamepad = ((device & SOURCE_GAMEPAD) == SOURCE_GAMEPAD);
boolean is_source_joystick = ((device & SOURCE_JOYSTICK) == SOURCE_JOYSTICK);

这应该有效。

编辑:我也查了,它也可以认为是键盘和鼠标。

于 2013-10-09T17:01:35.073 回答