Какова твоя цель?
Очевидная причина для этого состоит в том, чтобы определить, подходит ли устройство для игры, в которую можно играть. Если это происходит по какой-либо другой причине, то для получения соответствующей помощи необходимо уточнить цель.
С этим сказал ...
Поскольку невозможно напрямую запрашивать тип устройства - лично я бы искал что-то, что могло бы иметь только игровая приставка.
Другими словами: игровой контроллер / геймпад.
public ArrayList<Integer> getGameControllerIds() {
ArrayList<Integer> gameControllerDeviceIds = new ArrayList<Integer>();
int[] deviceIds = InputDevice.getDeviceIds();
for (int deviceId : deviceIds) {
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)) {
// This device is a game controller. Store its device ID.
if (!gameControllerDeviceIds.contains(deviceId)) {
gameControllerDeviceIds.add(deviceId);
}
}
}
return gameControllerDeviceIds;
}
Конечно, это не надежно. Очевидно, что ничего не будет возвращено, если геймпад (ы) были отключены в это время (не уверен, когда это произойдет). Не говоря уже о том, что некоторые телевизоры поддерживают геймпады (Samsung приходит в голову в первую очередь), но если вы хотите убедиться, что для приложения имеется адекватный вход, это было бы идеально.
Если геймпад отсутствует, может появиться сообщение «Пожалуйста, подключите геймпад». - при непрерывной проверке в фоновом режиме и автоматической обработке после обнаружения.