Also, hier ist mein Problem. Ich habe ein Java-Programm, das Keystroke-Nachrichten an ein Spiel (in Unity) sendet, basierend darauf, wie der Benutzer mit einem Android-Handy interagiert. (Mein Java-Programm ist ein Listener für die Android-Interaktion über Wi-Fi) Jetzt, um dies zu tun, verwende ich java.awt.Robot
, um keyPressen an das Spielfenster zu senden. Ich habe den folgenden Code-Block in meinem Zuhörer Programm geschrieben:java.awt.Robot.keyPress für kontinuierliche Tastenanschläge
if(interacting)
{
Robot robot = new Robot();
robot.keyPress(VK_A);
robot.delay(20); //to simulate the normal keyboard rate
}
Nun ist die Variable interacting
so lange wahr sein wird, wenn der Benutzer auf dem Touchscreen des Telefons nach unten drückt, und dem, was ich beabsichtige, eine kontinuierliche zu erreichen ist Kette von Tastenanschlägen, die dem Spiel (durch den Zuhörer) zugeführt werden. Dies beeinträchtigt jedoch die Leistung aus irgendeinem Grund erheblich. Ich merke, dass das Spiel langsam wird (schnell abfallende Frameraten), und sogar der Computer wird im Allgemeinen langsam. Was läuft falsch? Sollte ich eine robot.keyRelease(VK_A)
nach jeder keyPress
verwenden? Aber mein Spiel hat eine andere Aktion, die der Freigabe eines Schlüssels zugeordnet ist, und ich möchte keine schnellen Tasten drücken und freigeben; Was ich wirklich will, ist die Simulation von kontinuierlichen Tastenanschlägen, in genau die Art, wie es sich verhalten würde, wenn der Benutzer die A
Taste auf ihrer Tastatur manuell herunterdrücken würde. Bitte helfen Sie.
Huh? Android bietet keinen AWT-Roboter. –