2017-04-04 2 views
0

Ich arbeite gerade an einem Spracherkennungsprojekt und möchte basierend auf dem Sprachkommando des Benutzers auf bestimmte Schlüssel zugreifen. Zum Beispiel Wenn ein Benutzer 'a' spricht, möchte ich ein. Ich habe einen Befehl cmd gefunden, der das funktioniert. Dieser Befehl funktioniert in der Eingabeaufforderung und gibt eine as-Ausgabe zurück. Aber ich möchte das in meiner Java-Anwendung verwenden. Ich habe eine Methode gefunden, die Befehlsausgaben abrufen und drucken kann. Aber in diesem Fall ist es nicht möglich, "a" zu drucken. Bitte helfen..Hier ist das Code-Snippet.Java-Prozess Ergebnis erhalten

public void Voice() throws IOException { 
    Process p; 
    String work = "cmd /c nircmd.exe sendkey a press"; // used nircmd utility 

    p = Runtime.getRuntime().exec(work); 
    String output=""; 
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); 

    while ((output = reader.readLine()) !=null) { 
     System.out.println(output); 
    } 

    reader.close(); 
} 

Antwort

0

Wenn Sie Windows' Befehl cmd von Java, bedenken Sie, dass Ihr Arbeitsverzeichnis ist Ihr Projektverzeichnis oder das Verzeichnis aus, von wo aus Sie java laufen. Aus den Symptomen, die Sie beschrieben haben, scheint es, dass wenn Sie das nircmd Dienstprogramm von Java ausführen, es nicht gefunden wird. Versuchen Sie, der exe einen vollständigen Pfad zuzuweisen.

Ersetzen

String work = "cmd /c nircmd.exe sendkey a press";

mit

String work = "cmd /c "c:\\your-path\\nircmd.exe sendkey a press";

+0

Der Prozess fein arbeitet aber nicht ausgegeben 'a' zurückkehrt. Das Dienstprogramm nircmd befindet sich im Windows-Ordner. Es scannt zuerst Windows-Ordner und es gibt keine Notwendigkeit, den vollständigen Pfad anzugeben .... – Raj