我必须使用InputDevice。getSources()方法来确定InputDevice的类型(源)。但是它不返回预定的整数,而是返回一个组合的位域,例如:16786707(这是我游戏手柄的实际值)。
正如您所见,InputDevice文档页面中未列出16786707,因为它是即时生成的。如何解析数字16786707以确定InputDevice是:SOURCE_CLASS_JOYSTICK(16),还是SOURCE_GAMEPAD(1025),还是SOURCE_JOYSTICK(16777232)。我的目标是在初始化方法中确定InputDevice是否是像Xbox 360游戏手柄或任何其他游戏手柄一样的游戏手柄。
答案 0 :(得分: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);
这应该有用。
编辑:我也检查过,它也可以被认为是键盘和鼠标。