2011-04-12 7 views
1

Je sais que vous pouvez augmenter la quantité de temps d'envisager l'entrée complète en appelant:Android: reconnaissance vocale Stop Explicitement?

intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS,5000); 

Cependant, est-il un moyen après le coup d'envoi de l'activité de reconnaissance vocale Android, pour l'arrêter explicitement, par exemple après avoir reçu un "mot clé"

+0

J'ai trouvé onStopListening (RecognitionService.Callback écouteur) ici: http://developer.android.com/reference/android/speech/RecognitionService.html#onStopListening(android.speech.RecognitionService.Callback) mais je ne suis pas sûr c'est ce que je cherche ..... – Mike6679

+0

Aussi ce que je peux essayer (si aucune solution réelle n'est trouvée) est d'augmenter le temps que la reconnaissance vocale attend pour que l'énoncé soit complet puis analyser les résultats et si le mot-clé pour signifier que l'utilisateur est fait n'est pas trouvé, puis redémarrez l'intention de reconnaissance vocale ... Hacky oui mais peut-être un travail autour .. – Mike6679

Répondre

1

@Mike a raison.

Cela fonctionne:

Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
intent.putExtra(RecognizerIntent.EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS, new Long(2000)); 

Vous avez spécifier un long. Le simple fait de mettre un nombre ("2000") est interprété comme un entier, ce qui n'est pas valide.

0

Vous pouvez le faire en utilisant la classe SpeechRecognizer avec une interface utilisateur personnalisée au lieu de l'intention RecognizerIntent. SpeechRecognizer classe a la méthode stopListening(), vous pouvez appeler explicitement une fois que l'utilisateur appuie sur un bouton "stop".

Une autre façon de faire est de demander des résultats partiels avec EXTRA_PARTIAL_RESULTS et recherchez votre « mot-clé d'arrêt » dans le rappel de onPartialResultsRecognitionListener, puis stopListening() quand on est détecté.