Java Jinput: volver a escanear / recargar los controladores
Estoy usando javajinput
biblioteca para leer datos de joypad, y tengo problemas para recargarControllers
, Lo uso para cargarlos:
public Controller[] findStickControllers() {
ControllerEnvironment ce =
ControllerEnvironment.getDefaultEnvironment();
Controller[] cs = ce.getControllers();
System.out.println(cs.length); //test
ArrayList<Controller> sel = new ArrayList<>();
for (Controller c: cs) {
if(c.getType() == Type.STICK) {
sel.add(c);
}
}
return sel.toArray(new Controller[]{});
}
Esto funciona bien, pero si desconecto mi controlador, al llamar a este lo encontrará nuevamente y viceversa (conectarlo después de la primera verificación no lo encontrará en absoluto).
He tratado de poner el sueño antes de la búsqueda de puño, con estos resultados:
Los controladores se escanean de manera efectiva cuando se llama a este método por primera vez (no al inicio del programa)Cuando se vuelve a llamar, esto siempre devuelve los mismos controladores que devolvió por primera vez.La primera llamada también escribirá advertencia abajoIncluso cuando el controlador está conectado (y funciona), luego se desconecta (aún lo encontrará) y se vuelve a conectar, no funcionaráAdvertencia desde el punto 3: (no se formateó bien en la lista)
WARNING: Found unknown Windows version: Windows 8
Attempting to use default windows plug-in.
Loading: net.java.games.input.DirectAndRawInputEnvironmentPlugin
Estoy usando Win 8 y tuve el mismo problema en Win 7. También probé con el mouse, los mismos resultados.
¿Cómo puedo recargar de forma activa los controladores para el segundo, tercer y así sucesivamente?