HTC ONE M7被认为是GamePad

时间:2014-10-13 14:23:51

标签: android gamepad

我开发了一款APP Android,它可以检测设备类型(智能手机正常或游戏手柄)。 我在没有与游戏手柄连接的HTC ONE M7上做过测试。 但是我的代码告诉我它是游戏手柄。

这是我的代码:

InputDevice dev = InputDevice.getDevice(deviceId);
int sources = dev.getSources();
// Verify that the device has gamepad buttons, control sticks, or both.
if (((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) || ((sources & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK))
{
     Log.d(TAG, "device detected : Game Pad");
}

对于HTC ONE M7的deviceID = 2,我发现((sources& InputDevice.SOURCE_GAMEPAD)== InputDevice.SOURCE_GAMEPAD)为真。这就是HTC被认为是GamePad的原因。

任何人都知道为什么?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我们应该检查这样的GamePad的存在:(&&而不是||)

InputDevice dev = InputDevice.getDevice(deviceId);
int sources = dev.getSources();
// Verify that the device has gamepad buttons, control sticks, or both.
if (((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) && ((sources & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK))
{
    Log.d(TAG, "device detected : Game Pad");
}

因为对于一个真正的GamePad,它同时包含InputDevice.SOURCE_GAMEPAD和InputDevice.SOURCE_JOYSTICK。

你可以这样看: How do I determine what is the source of Input Device in android?

感谢。