2016-04-03 3 views
0

Community,Wie reagiert man am Ende eines SpeechRecognizer in einer anderen Klasse? Recognizer in der Extra-Klasse

Ich programmiere in Android und ich habe 2 Klassen, die Mainactivity und eine andere Klasse mit einem SpeechRecognizer (ein Listener). Ich möchte der Aktivität ein Zeichen geben, dass der Listener fertig ist, wie kann ich das machen? Soll ich die SpeechRecognizer-Klasse mit der mainActivity-Klasse erweitern und dann eine Methode aus der mainActivity-Klasse in der SpeechRecognizer-Klasse aufrufen? Hier ist eine vereinfachte Version von meinem Code, mein Problem zu verstehen:

Durst Klasse:

puplic class mainActivity{ 
    onCreate(){ 
    speech.startListening(); 
} 
} 

zweiter Klasse:

pulbic class speech implements Recognizer{ 

    startListening(){ 
    //start the listener 
    } 

    @Override 
    onResult(){ 
    //hear i get my string after a random various amount of time 
    //(when the recognizer is done with hearing my stuff) 
    //at this point i want to let the other class know, that im done here 
    } 
} 

Ich hoffe, dass Sie mein Problem zu verstehen, ich denke, seine eine einfache ein, aber ich weiß nicht eine Lösung.

Grüße

+0

Mögliches Duplikat von [Google SpeechRecognizer und pocket in zwei verschiedenen Klassen, wie sie in einer Schleife?] (Http://stackoverflow.com/questions/36403686/google-speechrecognizer-and-pocketsphinx-in-two- verschiedene Klassen-wie-zu-Schleife-t) –

Antwort

1

Rufen Sie einfach setRecognitionListener auf Ihrer MainActivity.

public class MainActivity extends Activity { 

    SpeechRecognizer speech; 

    public void onCreate(){ 
     super.onCreate(); 
     speech.startListening(); 
     recognizer.setRecognitionListener(new RecognitionListener() { 
     @Override 
     public void onReadyForSpeech(Bundle bundle) { 

     } 

     @Override 
     public void onBeginningOfSpeech() { 

     } 

     @Override 
     public void onRmsChanged(float v) { 

     } 

     @Override 
     public void onBufferReceived(byte[] bytes) { 

     } 

     @Override 
     public void onEndOfSpeech() { 

     } 

     @Override 
     public void onError(int i) { 

     } 

     @Override 
     public void onResults(Bundle bundle) { 

     } 

     @Override 
     public void onPartialResults(Bundle bundle) { 

     } 

     @Override 
     public void onEvent(int i, Bundle bundle) { 

     } 
    }); 
    } 
} 
+0

Ich denke, dass dies nicht funktioniert oder eher, ich weiß nicht, wie man das verwendet. Meine Frage war zu vereinfachen, hier ist die längere http://stackoverflow.com/questions/36403686/google-spechrecognizer-and-pocketsphinx-in-zwei-unterschiedliche-klassen-how-to-loop-t – Phil

+0

Denken Sie einfach einen Knopf haben, um mit dem Sprechen zu beginnen. Nachdem Sie auf diesen Knopf geklickt haben, benutzen Sie die 'startListening()' Funktion. Und wenn deine Rede endet, wird 'onEndOfSpeech()' Funktion ausgelöst –

+0

Mhh ich verstehe nicht, was versuchst du, mir zu sagen. Woher kommt der Erkenner? (Ich setze meinen setRecognitionListener in der anderen Klasse, nicht in der MainActivity, schau dir meine andere Frage an) – Phil

Verwandte Themen