Cette fois, j'aimerais utiliser la télécommande Wii avec Java.
Il existe peu de documents japonais et ils sont anciens, donc j'espère que vous pourrez les utiliser comme nouveaux documents.
Cela ne fonctionnera que si la télécommande Wii est associée au PC en tant que périphérique Bluetooth. Assurez-vous de le coupler avant de l'exécuter.
Windows 10 Home Edition Eclipse 4.6 Java 1.8
Nous procéderons comme un projet ordinaire, pas comme Maven.
WiiuseJ Wiiusej 0.12a.zip à https://code.google.com/archive/p/wiiusej/downloads
Placez wiiuse.dll et WiiUseJ.dll pour Windows et libwiiuse.so et libWiiuseJ.so pour les utilisateurs Mac dans le dossier de ressources.
Si une télécommande Wii est trouvée, la variable wiimote contiendra l'objet télécommande Wii.
example.java
import com.github.awvalenti.wiiusej.WiiusejNativeLibraryLoadingException;
import wiiusej.WiiUseApiManager;
import wiiusej.Wiimote;
public class MainAccessPoint {
private Wiimote wiimote;
private Wiimote[] wiimotes;
public MainAccessPoint() throws InterruptedException {
try {
System.out.println("Finding wiimotes...");
while(wiimotes == null) {
/*2019/8/Il y a eu une erreur. getWiimotes(1);Ne pas obtenir(1, true);était. En outre, WiiUseApiManager a fait l'objet d'un accès statique.*/
wiimotes = WiiUseApiManager.getWiimotes(1, true);
if(wiimotes != null && wiimotes.length > 0) {
wiimote = wiimotes[0];
System.out.println("Télécommande Wii trouvée. Id: " + wiimote.getId());
break;
}
wiimotes = null;
continue;
}
} catch (WiiusejNativeLibraryLoadingException e) {
e.printStackTrace();
}
}
public static void main(String args[]) throws InterruptedException {
MainAccessPoint main = new MainAccessPoint();
}
}
Spécifiez avec booléen dans l'ordre à partir de la gauche du premier argument.
python
wiimote.setLeds(true, false, false, false);
Enregistrez les écouteurs suivants dans wiimote.
Listener.java
import wiiusej.values.GForce;
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
import wiiusej.wiiusejevents.physicalevents.IREvent;
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
import wiiusej.wiiusejevents.utils.WiimoteListener;
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
public class Listener implements WiimoteListener {
public Listener() {
}
//S'allume lorsque le bouton est enfoncé. Vous pouvez dire de quel bouton il s'agit par le nom de la méthode.
@Override
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
if(arg0.isButtonHomeJustPressed()) {
} else if(arg0.isButtonHomeJustReleased()) {
} else if(arg0.isButtonPlusJustPressed()) {
} else if(arg0.isButtonPlusJustReleased()) {
} else if(arg0.isButtonMinusJustPressed()) {
} else if(arg0.isButtonMinusJustReleased()) {
} else if(arg0.isButtonOneJustPressed()) {
} else if(arg0.isButtonOneJustReleased()) {
} else if(arg0.isButtonTwoJustPressed()) {
} else if(arg0.isButtonTwoJustReleased()) {
} else if(arg0.isButtonAJustPressed()) {
} else if(arg0.isButtonAJustReleased()) {
} else if(arg0.isButtonBJustPressed()) {
} else if(arg0.isButtonBJustReleased()) {
} else if(arg0.isButtonRightJustPressed()) {
} else if(arg0.isButtonRightJustReleased()) {
} else if(arg0.isButtonLeftJustPressed()) {
} else if(arg0.isButtonLeftJustReleased()) {
} else if(arg0.isButtonUpJustPressed()) {
} else if(arg0.isButtonUpJustReleased()) {
} else if(arg0.isButtonDownJustPressed()) {
} else if(arg0.isButtonDownJustReleased()) {
}
}
//S'enflamme lorsque la télécommande Wii bouge.
@Override
public void onMotionSensingEvent(MotionSensingEvent arg0) {
//La valeur du capteur d'accélération 3 axes est de 1 à-Il sera retourné dans la plage de 1.
GForce force = arg0.getGforce();
System.out.println("X: " + force.getX());
System.out.println("Y: " + force.getY());
System.out.println("Z: " + force.getZ());
}
@Override public void onStatusEvent(StatusEvent arg0) {}
@Override public void onDisconnectionEvent(DisconnectionEvent arg0) {}
@Override public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) {}
@Override public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) {}
@Override public void onExpansionEvent(ExpansionEvent arg0) {}
@Override public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {}
@Override public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {}
@Override public void onIrEvent(IREvent arg0) {}
@Override public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {}
@Override public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {}
}
wiimote.addWiiMoteEventListeners(new Listener());
Vous devez écrire le code suivant pour obtenir le mouvement.
wiimote.activateMotionSensing();
Je l'ajouterai quand je découvrirai quelque chose. Si vous avez des questions, laissez un commentaire.
Recommended Posts