【问题标题】:How do I determine what is the source of Input Device in android?如何确定android中输入设备的来源是什么?
【发布时间】:2013-10-09 16:48:24
【问题描述】:

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

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

【问题讨论】:

    标签: java android bit-fields


    【解决方案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);
    

    这应该可行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多