• Home »
  • Sprung Bewegung »

    6 Schritt:Schritt 1: Erforderliche Schritt 2: Software-Setup Schritt 3: Leap Motion Listener Schritt 4: Rahmen und Gestendaten Schritt 5: Komplett-Code! Schritt 6: Ausführen des Programms und die Ergebnisse:

    Hallo an alle, Ich bin Geeve George ein 15 Jahre alter Maker.I Liebe Computer Vision, Android Entwicklung und Algorithm design.I bin derzeit in der 11. Klasse und auch eine Forschungskooperation mit der Studenten MIT Media Lab Indien Intiative. Die meisten von euch vielleicht die Eisen-Man Filme gesehen haben. Tony Stark Erfindungen sind die Hauptattraktion in der Eisen-Mann-Serie. Mein Traum ist es, das Eisen-Mannklage eines Tages zu bauen. Und die Erfindungen auf dem Stark Tower gibt etwas, was ich wünschte immer zu machen. Die meisten von euch haben vielleicht gesehen, dass Tony Stark steuert seinem Computer in der Luft, als ich jünger war habe ich immer lieben, wie Tony Stark vereinfacht die Interaktion zwischen der physischen Welt und der digitalen Welt. Und ich würde versuchen, sie in meinen Projekten zu replizieren. Und jetzt bin ich glücklich, eine instructable auf, wie man eine App zu programmieren, so dass Sie Ihren Computer in der Luft zu steuern machen. :) Ich möchte meinen besonderen Dank an Intel, Instructables und Adafruit für die Vergabe von mir die Adafruit Geschenkkarten, mit denen ich in der Lage, um das Leap Motion Controller kaufen erstrecken. Schritt 1: Erforderliche Leap Motion unterstützt Python, Java, C ++, C #, JavaScript. In diesem Tutorial werden wir mit Java arbeiten. Also, bevor wir anfangen, das Programm, das wir brauchen, um einen Blick auf die für diesen Build Voraussetzungen erfüllt sein: 1. Leap Motion Controller (kaufen Sie hier) 2. Eclipse-IDE für Java-Entwickler (Download von hier) 3. Leap Motion Setup-Datei (Download von hier) 4. Leap Motion SDK (Download von hier) 5. Java SE 7 (Download Hier) (Download JDK und JRE) (* Leap Motion Bibliothek funktioniert nur Java 6 oder Java 7) Wenn Sie wissen, wie Sie Setup-eclipse, empfehle ich dieses Tutorial Einführung in Java-Serie nicht: Sehen Sie es hier Ok, Lassen Sie uns jetzt auf die Schritte für die Erstellung der program.Step 2 beteiligt bewegen: Software-Setup Leap Motion unterstützt die Vielzahl von Programmiersprachen wie C ++, C #, Python, Java, Javascript. In diesem Tutorial werden wir die Programmierung in Java ist. Ersteinrichtung : 1. Erstens gehen https://www.leapmotion.com/setup und laden Sie die Leap Motion Setup-Datei und installieren Sie dann die Anwendung. Es installiert alles, um den Sprung-Motion-Controller an Ihren Computer anschließen. 2. Als nächstes gehen Sie zu https://developer.leapmotion.com/ (Developer Portal) und ein Konto erstellen. Dann laden Sie die Leap Motion SDK. 3. Anschließend extrahieren Sie alle Dateien aus der Zip-Datei in einen beliebigen Ordner Ihrer Wahl. CLASSPATH konfigurieren: In diesem Tutorial werde ich mit Hilfe der Eclipse-IDE für Java-Entwickler. 1. Öffnen Sie Eclipse dann klicken Sie auf Datei> Neu> Java-Projekt. 2. Geben Sie dem Projekt einen Namen, und stellen Sie sicher, dass Sie die Ausführung Laufzeitumgebung JRE Java SE 1.7 eingestellt, wie in den Abbildungen gezeigt. 3. Klicken Sie anschließend auf der nächsten, die öffnen Sie die Registerkarte Bibliotheken und wählen Sie "Add External JARs" und navigieren Sie zu dem Ordner, den Sie zuvor extrahiert. 4. Öffnen Sie dann die LeapSDK Ordner und gehen Sie zum Ordner libs und wählen Sie das LeapJava.jar Datei. 5. Als nächstes klicken Sie auf den dreieckigen Dropdown-Schaltfläche neben LeapJava.jar und klicken dann auf native Bibliothek Ort aus dem Dropdown-Menü, und klicken Sie auf Bearbeiten, wie in der Abbildung dargestellt. 6. Klicken Sie dann auf externen Ordner und navigieren Sie zum Ordner LeapSDK> lib> und wählen x64 oder x86-Ordner für Ihr Betriebssystem und klicken Sie auf OK und klicken Sie dann auf Finish. Wir haben jetzt LeapMotion Setup mit unserem Projekt, jetzt lasst uns bis zu einem gewissen Codierung Schritt 3: Leap Motion Listener Jetzt, da wir den Import der Bibliotheken getan, lassen Sie uns die Arbeit an dem Projekt. Ersteinrichtung : 1. Zunächst müssen wir eine neue Klasse in der Quelle Ordner zu erstellen, für die Sie auf den dreieckigen Dropdown-Pfeil neben Ihrem Projektordner. 2. Im Inneren finden Sie Projektordner Rechtsklick auf das src Verzeichnis gehen, um neue> und klicken Sie auf Klasse, um eine neue Java-Klasse erstellen. 3. Geben Sie einen Namen für die Klasse und klicken Sie auf Finish. Jetzt fangen wir mit dem Code: 1. Zuerst erstellen wir ein Leap Motion Listener: (Hinweis: Importieren Sie die benötigten Bibliotheken), der zugehört erkennt, wenn der Sprung-Motion-Controller ist mit dem Computer verbunden ist. Paket starkmouse; Import java.io.IOException; Import java.awt.AWTException; Import java.awt.GraphicsDevice; Import java.awt.GraphicsEnvironment; Import java.awt.MouseInfo; Import java.awt.Point; Import java.awt.Robot; Import java.awt.event.InputEvent; Import java.awt.event.KeyEvent; importieren com.leapmotion.leap. *; Import com.leapmotion.leap.Controller.PolicyFlag; public class leapmoues { public static void main (String [] args) throws AWTException { Controller Controller = new Controller (); controller.setPolicyFlags (PolicyFlag.POLICY_BACKGROUND_FRAMES); SampleListener Hörer = neue SampleListener (); controller.addListener (Hörer); // Controller.enableGesture (Gesture.Type.TYPE_SCREEN_TAP); // Controller.enableGesture (Gesture.Type.TYPE_SWIPE); controller.enableGesture (Gesture.Type.TYPE_CIRCLE); System.out.println ("Drücken Sie die Eingabetaste, um zu beenden ..."); try { System.in.read (); } Catch (IOException e) { e.printStackTrace (); } controller.removeListener (Hörer); } } </ p> <p> Klasse SampleListener erstreckt Listener { boolean readyForControl = false; int screen; int screen; boolean iBoxGet = false; InteractionBox iBox = null; Roboter Roboter; boolean isMoving = false; boolean unGrip = false; boolean wasFacingDown = true; boolean wasInTabState = false; boolean wasTabbing = false; boolean justCircleGestured = false; boolean isResizing = false; public void onConnect (Controller-Controller) { System.out.println ("Connected"); Graphics gd = GraphicsEnvironment.getLocalGraphicsEnvironment () .getDefaultScreenDevice (); screen = gd.getDisplayMode () getWidth (). screenheight = gd.getDisplayMode () getHeight (). System.out.println ("Schirm-Entschließung: X:" + screen + ", H" + Screen); readyForControl = true; try { Roboter = new Robot (); robot.setAutoDelay (5); } Catch (AWTException e) { // TODO Automatisch generierte catch-Block e.printStackTrace (); } } Schritt 4: Rahmen und Gestendaten Leap Motion Frame-Daten, die die Gesten umfasst (Circle, Pinch, Palm Gesicht nach unten und alle anderen Gesten) Leap Motion hat zwei IR-Kamera und drei IR-LED. Der Sprung Bewegung bildet ein 3D-Erfassung von Daten unter Verwendung der drei IR-LED, die einen IR-Punktmuster, die die IR-Kamera nimmt Bilder als Rahmen bekannt zu löschen. Die Rahmen erhalten aus dem Sprung Bewegungsvorrichtung an den Computer gesendet und wir können es programmieren. Der Sprung Bewegungsanalyse die Bilder und der Punkt Positionierung mit Hilfe komplexer Mathematik und vergleichen Sie die Daten der beiden Bilder durch IR-Kamera und die Verwendung der zwei 2D-Darstellung getroffen werden, um eine 3D-Darstellung zu erhalten. Der Sprung Bewegungsvorrichtung fängt bei 300 fps. Programmieren wir dann, was mit jedem der Rahmen in unseren Computer gesendet. Code: public void onFrame (Controller-Controller) { Frame Bilderrahmen = controller.frame (); // Die neueste Rahmen // Rahmen previous = controller.frame (1); // Die vorhergehenden Rahmen // System.out.println ("Frame vorhanden"); if (! iBoxGet) { iBox = frame.interactionBox (); iBoxGet = true; System.out.println ("Interaction Box-Set!"); } // Anzielbaren furthestFront = frame.pointables () vorderste (.); Hand rechts = frame.hands () am weitesten rechts (). Vector PalmV = rightHand.palmVelocity (); // System.out.println ("Velocity: X:" + palmV.getX () + ", Y:" + // PalmV.getY () // + "Z:" + palmV.getZ ()); Vector (palmN = rightHand.palmNormal); // System.out.println ("Normal: X:" + palmN.getX () + ", Y" // + PalmN.getY () + ", Z:" + palmN.getZ ()); Punkt mouseLoc = MouseInfo.getPointerInfo () getLocation (). int currentMouseX = mouseLoc.x; int currentMouseY = mouseLoc.y; if (readyForControl && rightHand.confidence ()> 0,15) { if (! isMoving &&! wasInTabState && frame.hands (). count ()> 1) { Hand Lefthand = frame.hands () ganz links (). if (leftHand.pinchStrength ()> 0,8 && RightHand.pinchStrength ()> 0,8) { if (! isResizing) { System.out.println ("Ändern der Größe ..."); robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_S); robot.keyRelease (KeyEvent.VK_S); robot.keyPress (KeyEvent.VK_DOWN); robot.keyPress (KeyEvent.VK_RIGHT); robot.keyRelease (KeyEvent.VK_DOWN); robot.keyRelease (KeyEvent.VK_RIGHT); isResizing = true; } } else { if (isResizing) { System.out.println ("Ändern der Größe komplett!"); robot.mousePress (InputEvent.BUTTON1_MASK); robot.mouseRelease (InputEvent.BUTTON1_MASK); isResizing = false; } } } // System.out.println ("Selbstvertrauen:" + rightHand.confidence ()); if (rightHand.grabStrength ()> 0,99 &&! wasInTabState &&! isResizing) { if (! isMoving && palmN.getY () <0,8) { robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_R); robot.keyRelease (KeyEvent.VK_R); </ p> <p> robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_M); robot.keyRelease (KeyEvent.VK_M); robot.keyPress (KeyEvent.VK_DOWN); robot.keyRelease (KeyEvent.VK_DOWN); isMoving = true; } // System.out.println (rightHand.grabStrength ()); } else { // System.out.println ("Nicht Grabbing"); if (isMoving) { robot.mousePress (InputEvent.BUTTON1_MASK); robot.mouseRelease (InputEvent.BUTTON1_MASK); isMoving = false; if (palmN.getX ()! = 0 && palmN.getY ()! = 0 && palmN.getZ ()! = 0) { if (palmN.getY () <± 1 && palmN.getZ ()> -.8) { if (currentMouseY <= 8) { robot.keyPress (KeyEvent.VK_WINDOWS); robot.keyPress (KeyEvent.VK_UP); robot.keyRelease (KeyEvent.VK_WINDOWS); robot.keyRelease (KeyEvent.VK_UP); } else { if (screen - currentMouseX <= 12) { robot.keyPress (KeyEvent.VK_WINDOWS); robot.keyPress (KeyEvent.VK_RIGHT); robot.keyRelease (KeyEvent.VK_WINDOWS); robot.keyRelease (KeyEvent.VK_RIGHT); } Else if (currentMouseX <= 12) { robot.keyPress (KeyEvent.VK_WINDOWS); robot.keyPress (KeyEvent.VK_LEFT); robot.keyRelease (KeyEvent.VK_WINDOWS); robot.keyRelease (KeyEvent.VK_LEFT); } } } Else { System.out.println ("Normal: X:" + palmN.getX () + ", Y:" + palmN.getY () + ", Z" + PalmN.getZ ()); robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_N); robot.keyRelease (KeyEvent.VK_N); } } } } </ p> <p> if (! isMoving &&! isResizing) { if (palmN.getY () <-.8 && palmN.getZ ()> ± 5) { wasFacingDown = true; wasTabbing = false; if (wasInTabState) { robot.keyPress (KeyEvent.VK_ENTER); robot.keyRelease (KeyEvent.VK_ENTER); wasInTabState = false; } } Else if (palmN.getY ()> = 0,8 && wasFacingDown &&! WasInTabState) { System.out.println ("Alt-Tab"); wasFacingDown = false; wasInTabState = true; </ p> <p> wasTabbing = false; robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_CONTROL); robot.keyPress (KeyEvent.VK_TAB); robot.delay (100); robot.keyRelease (KeyEvent.VK_TAB); robot.keyRelease (KeyEvent.VK_CONTROL); robot.keyRelease (KeyEvent.VK_ALT); try { Runtime.getRuntime (). Exec ( "cmd / C starten" + "C: \\ WindowSwitcher.lnk"); } Catch (IOException e) { // TODO Automatisch generierte catch-Block e.printStackTrace (); } robot.delay (300); } Else if (wasInTabState &&! WasFacingDown &&! WasTabbing && PalmN.getY () <0,45) {</ p> <p> wasTabbing = true; } Else if (wasInTabState &&! WasFacingDown && wasTabbing && PalmN.getY ()> 0,75) { robot.keyPress (KeyEvent.VK_TAB); robot.keyRelease (KeyEvent.VK_TAB); wasTabbing = false; } } </ p> <p> / * * If (! IsMoving &&! WasInTabState) {/ * if (palmN.getZ () <= -.7 && * RightHand.grabStrength () <0,1) { * System.out.println ("Palm Vertikalgeschwindigkeit:" + * RightHand.palmVelocity () getY ()). // schweben resultVerticalV = * Math.round (Math.abs (rightHand.palmVelocity () getY ()) -. 1); * // If (resultVerticalV> 0) {robot.mouseWheel ((int) * Math.round (((rightHand.palmVelocity () getY ()) / 500).)); //} *} Else { * / </ p> <p> if (! isMoving &&! wasInTabState && frame.gestures (). count ()> 0 && Frame.hands (). Count () == 1 &&! IsResizing) { CircleGesture circleGesture = new CircleGesture (Rahmen .gestures () zu bekommen (0)). // System.out.println ("Pinch Stärke:" + // RightHand.pinchStrength ()); if (circleGesture.durationSeconds ()> 0,5 &&! justCircleGestured && RightHand.pinchStrength ()> 0,8) { System.out.println ("Closed ein Fenster!"); robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_F4); robot.keyRelease (KeyEvent.VK_F4); robot.keyRelease (KeyEvent.VK_ALT); justCircleGestured = true; } } Else { justCircleGestured = false; } </ p> <p> float xSpeed ​​= (palmV.getX () / 6); schweben yspeed = (palmV.getY () / 6); // System.out.println ("xSpeed:" + xSpeed ​​+ ", yspeed:" + yspeed); robot.mouseMove ((int) (currentMouseX + xSpeed) (int) (currentMouseY - yspeed)); </ p> <p> //} } } } </ p> Schritt 5: Komplett-Code! <p> Paket starkmouse; </ p> <p> Import java.io.IOException; Import java.awt.AWTException; Import java.awt.GraphicsDevice; Import java.awt.GraphicsEnvironment; Import java.awt.MouseInfo; Import java.awt.Point; Import java.awt.Robot; </ p> <p> Import java.awt.event.InputEvent; Import java.awt.event.KeyEvent; </ p> <p> Import com.leapmotion.leap. *; Import com.leapmotion.leap.Controller.PolicyFlag; </ p> <p> public class leapmoues { public static void main (String [] args) throws AWTException { Controller Controller = new Controller (); controller.setPolicyFlags (PolicyFlag.POLICY_BACKGROUND_FRAMES); </ p> <p> SampleListener Hörer = neue SampleListener (); controller.addListener (Hörer); // Controller.enableGesture (Gesture.Type.TYPE_SCREEN_TAP); // Controller.enableGesture (Gesture.Type.TYPE_SWIPE); controller.enableGesture (Gesture.Type.TYPE_CIRCLE); </ p> <p> System.out.println ("Drücken Sie die Eingabetaste, um zu beenden ..."); try { System.in.read (); } Catch (IOException e) { e.printStackTrace (); } </ p> <p> controller.removeListener (Hörer); } } </ p> <p> Klasse SampleListener erstreckt Listener {</ p> <p> boolean readyForControl = false; int screen; int screen; boolean iBoxGet = false; InteractionBox iBox = null; Roboter Roboter; boolean isMoving = false; boolean unGrip = false; boolean wasFacingDown = true; boolean wasInTabState = false; boolean wasTabbing = false; boolean justCircleGestured = false; boolean isResizing = false; </ p> <p> public void onConnect (Controller-Controller) { System.out.println ("Connected"); Graphics gd = GraphicsEnvironment.getLocalGraphicsEnvironment () .getDefaultScreenDevice (); screen = gd.getDisplayMode () getWidth (). screenheight = gd.getDisplayMode () getHeight (). System.out.println ("Schirm-Entschließung: X:" + screen + ", H" + Screen); readyForControl = true; try { Roboter = new Robot (); robot.setAutoDelay (5); } Catch (AWTException e) { // TODO Automatisch generierte catch-Block e.printStackTrace (); } } </ p> <p> public void onFrame (Controller-Controller) { Frame Bilderrahmen = controller.frame (); // Die neueste Rahmen // Rahmen previous = controller.frame (1); // Die vorhergehenden Rahmen // System.out.println ("Frame vorhanden"); if (! iBoxGet) { iBox = frame.interactionBox (); iBoxGet = true; System.out.println ("Interaction Box-Set!"); } // Anzielbaren furthestFront = frame.pointables () vorderste (.); Hand rechts = frame.hands () am weitesten rechts (). Vector PalmV = rightHand.palmVelocity (); // System.out.println ("Velocity: X:" + palmV.getX () + ", Y:" + // PalmV.getY () // + "Z:" + palmV.getZ ()); Vector (palmN = rightHand.palmNormal); // System.out.println ("Normal: X:" + palmN.getX () + ", Y" // + PalmN.getY () + ", Z:". + PalmN.getZ ()); </ p> <p> Point mouseLoc = MouseInfo.getPointerInfo () getLocation (); int currentMouseX = mouseLoc.x; int currentMouseY = mouseLoc.y; </ p> <p> if (readyForControl && rightHand.confidence ()> 0,15) { if (! isMoving &&! wasInTabState && frame.hands (). count ()> 1) { Hand Lefthand = frame.hands () ganz links (). if (leftHand.pinchStrength ()> 0,8 && RightHand.pinchStrength ()> 0,8) { if (! isResizing) { System.out.println ("Ändern der Größe ..."); robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_S); robot.keyRelease (KeyEvent.VK_S); robot.keyPress (KeyEvent.VK_DOWN); robot.keyPress (KeyEvent.VK_RIGHT); robot.keyRelease (KeyEvent.VK_DOWN); robot.keyRelease (KeyEvent.VK_RIGHT); isResizing = true; } } else { if (isResizing) { System.out.println ("Ändern der Größe komplett!"); robot.mousePress (InputEvent.BUTTON1_MASK); robot.mouseRelease (InputEvent.BUTTON1_MASK); isResizing = false; } } } // System.out.println ("Selbstvertrauen:" + rightHand.confidence ()); if (rightHand.grabStrength ()> 0,99 &&! wasInTabState &&! isResizing) { if (! isMoving && palmN.getY () <0,8) { robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_R); robot.keyRelease (KeyEvent.VK_R); </ p> <p> robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_M); robot.keyRelease (KeyEvent.VK_M); robot.keyPress (KeyEvent.VK_DOWN); robot.keyRelease (KeyEvent.VK_DOWN); isMoving = true; } </ p> <p> // System.out.println (rightHand.grabStrength ()); } Else { // System.out.println ("Nicht Grabbing"); if (isMoving) {</ p> <p> robot.mousePress (InputEvent.BUTTON1_MASK); robot.mouseRelease (InputEvent.BUTTON1_MASK); isMoving = false;! </ p> <p> if (palmN.getX () = 0 && palmN.getY () = 0 && PalmN.getZ ()! = 0) { if (palmN.getY () <± 1 && palmN.getZ ()> -.8) { if (currentMouseY <= 8) { robot.keyPress (KeyEvent.VK_WINDOWS); robot.keyPress (KeyEvent.VK_UP); robot.keyRelease (KeyEvent.VK_WINDOWS); robot.keyRelease (KeyEvent.VK_UP); } Else { if (screen - currentMouseX <= 12) { robot.keyPress (KeyEvent.VK_WINDOWS); robot.keyPress (KeyEvent.VK_RIGHT); robot.keyRelease (KeyEvent.VK_WINDOWS); robot.keyRelease (KeyEvent.VK_RIGHT); } Else if (currentMouseX <= 12) { robot.keyPress (KeyEvent.VK_WINDOWS); robot.keyPress (KeyEvent.VK_LEFT); robot.keyRelease (KeyEvent.VK_WINDOWS); robot.keyRelease (KeyEvent.VK_LEFT); } } } Else { System.out.println ("Normal: X:" + palmN.getX () + ", Y:" + palmN.getY () + ", Z" + PalmN.getZ ()); robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_SPACE); robot.keyRelease (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_N); robot.keyRelease (KeyEvent.VK_N); } } } } </ p> <p> if (! isMoving &&! isResizing) { if (palmN.getY () <-.8 && palmN.getZ ()> ± 5) { wasFacingDown = true; wasTabbing = false; if (wasInTabState) { robot.keyPress (KeyEvent.VK_ENTER); robot.keyRelease (KeyEvent.VK_ENTER); wasInTabState = false; } } Else if (palmN.getY ()> = 0,8 && wasFacingDown &&! WasInTabState) { System.out.println ("Alt-Tab"); wasFacingDown = false; wasInTabState = true; </ p> <p> wasTabbing = false; robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_CONTROL); robot.keyPress (KeyEvent.VK_TAB); robot.delay (100); robot.keyRelease (KeyEvent.VK_TAB); robot.keyRelease (KeyEvent.VK_CONTROL); robot.keyRelease (KeyEvent.VK_ALT); try { Runtime.getRuntime (). Exec ( "cmd / C starten" + "C: \\ WindowSwitcher.lnk"); } Catch (IOException e) { // TODO Automatisch generierte catch-Block e.printStackTrace (); } robot.delay (300); } Else if (wasInTabState &&! WasFacingDown &&! WasTabbing && PalmN.getY () <0,45) {</ p> <p> wasTabbing = true; } Else if (wasInTabState &&! WasFacingDown && wasTabbing && PalmN.getY ()> 0,75) { robot.keyPress (KeyEvent.VK_TAB); robot.keyRelease (KeyEvent.VK_TAB); wasTabbing = false; } } </ p> <p> / * * If (! IsMoving &&! WasInTabState) {/ * if (palmN.getZ () <= -.7 && * RightHand.grabStrength () <0,1) { * System.out.println ("Palm Vertikalgeschwindigkeit:" + * RightHand.palmVelocity () getY ()). // schweben resultVerticalV = * Math.round (Math.abs (rightHand.palmVelocity () getY ()) -. 1); * // If (resultVerticalV> 0) {robot.mouseWheel ((int) * Math.round (((rightHand.palmVelocity () getY ()) / 500).)); //} *} Else { * / </ p> <p> if (! isMoving &&! wasInTabState && frame.gestures (). count ()> 0 && Frame.hands (). Count () == 1 &&! IsResizing) { CircleGesture circleGesture = new CircleGesture (Rahmen .gestures () zu bekommen (0)). // System.out.println ("Pinch Stärke:" + // RightHand.pinchStrength ()); if (circleGesture.durationSeconds ()> 0,5 &&! justCircleGestured && RightHand.pinchStrength ()> 0,8) { System.out.println ("Closed ein Fenster!"); robot.keyPress (KeyEvent.VK_ALT); robot.keyPress (KeyEvent.VK_F4); robot.keyRelease (KeyEvent.VK_F4); robot.keyRelease (KeyEvent.VK_ALT); justCircleGestured = true; } } Else { justCircleGestured = false; } </ p> <p> float xSpeed ​​= (palmV.getX () / 6); schweben yspeed = (palmV.getY () / 6); // System.out.println ("xSpeed:" + xSpeed ​​+ ", yspeed:" + yspeed); robot.mouseMove ((int) (currentMouseX + xSpeed) (int) (currentMouseY - yspeed)); </ p> <p> //} } } } </ p> Schritt 6: Ausführen des Programms und die Ergebnisse: Nachdem wir nun abgeschlossen Programmierung des Leap Motion Controller können wir das Programm in Eclipse ausführen. Wie Sie im Video gesehen haben unser Programm können verschiedene Gesten erkennen, jetzt ist es Ihre Zeit, mehr Gesten mit der Hilfe von der Leap Motion Programming Guide fügen Sie hier. Fühlen Sie sich frei, um Ihre Kommentare und Frage in den Kommentaren Abschnitt fallen, werde ich glücklich sein, um sie reagieren zu können :) Ich bin auch auf Youtube, Facebook und Linkedin, dann zögern Sie mir, mich im Falle von Rückfragen zu pingen. :) Mein persönlicher Blog: http://www.geevegeorge.co.vu$(function() {$("a.lightbox").lightBox();});

    Seiten: