Dieses Mal möchte ich die Wii-Fernbedienung mit Java verwenden.
Es gibt nur wenige japanische Dokumente und sie sind alt, daher hoffe ich, dass Sie sie als neue Dokumente verwenden können.
Es funktioniert nur, wenn die Wii-Fernbedienung als Bluetooth-Gerät mit dem PC gekoppelt ist. Stellen Sie sicher, dass Sie vor der Ausführung ein Pairing durchführen.
Windows 10 Home Edition Eclipse 4.6 Java 1.8
Wir werden als gewöhnliches Projekt fortfahren, nicht als Maven.
WiiuseJ Wiiusej 0.12a.zip unter https://code.google.com/archive/p/wiiusej/downloads
Legen Sie wiiuse.dll und WiiUseJ.dll für Windows sowie libwiiuse.so und libWiiuseJ.so für Mac-Benutzer im Ressourcenordner ab.
Wenn eine Wii-Fernbedienung gefunden wird, enthält die wiimote-Variable das Wii-Fernbedienungsobjekt.
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/5 Es ist ein Fehler aufgetreten. getWiimotes(1);Nicht getWiimotes(1, true);war. Außerdem wurde statisch auf WiiUseApiManager zugegriffen.*/
wiimotes = WiiUseApiManager.getWiimotes(1, true);
if(wiimotes != null && wiimotes.length > 0) {
wiimote = wiimotes[0];
System.out.println("Wii-Fernbedienung gefunden. Ich würde: " + wiimote.getId());
break;
}
wiimotes = null;
continue;
}
} catch (WiiusejNativeLibraryLoadingException e) {
e.printStackTrace();
}
}
public static void main(String args[]) throws InterruptedException {
MainAccessPoint main = new MainAccessPoint();
}
}
Geben Sie mit boolean in der Reihenfolge von links ab dem ersten Argument an.
python
wiimote.setLeds(true, false, false, false);
Registrieren Sie die folgenden Listener in 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() {
}
//Zünden, wenn die Taste gedrückt wird. Sie können anhand des Methodennamens erkennen, um welche Schaltfläche es sich handelt.
@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()) {
}
}
//Zünden, wenn sich die Wii-Fernbedienung bewegt.
@Override
public void onMotionSensingEvent(MotionSensingEvent arg0) {
//Der Wert des 3-Achsen-Beschleunigungssensors beträgt 1 bis-Es wird im Bereich von 1 zurückgegeben.
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());
Sie müssen den folgenden Code schreiben, um die Bewegung zu erhalten.
wiimote.activateMotionSensing();
Ich werde es hinzufügen, wenn ich etwas herausfinde. Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar.
Recommended Posts