RecognizerIntent abschalten


Crash123

Erfahrenes Mitglied
Hi Leute,

hoffentlich könnt ihr mir helfen.

Ich nutze das RecognizerIntent:
Code:
import android.app.Activity;
import android.content.Intent;
import android.speech.RecognizerIntent;

public class Dictate {

	
	static public final int SPEECH_RECOGNIZED = 1;
	
	static public void recognize(Activity activity){
		
		Intent intent = new Intent();
		
		intent.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
		intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
		
		activity.startActivityForResult(intent, SPEECH_RECOGNIZED);
	}
}
Dieses wird aufgerufen nachdem einige Sachen passiert sind.
Nun habe ich aber einen Thread der ab und an Sprache ausgibt
nun möchte ich vermeiden, dass das RecognizerIntent offen ist
wärend das Handy Sound ausgibt.

Kann ich das RecognizerIntent geziehlt stoppen, vielleicht auch noch
so dass es ein geeignetes Result liefert?

Und wo ich gerade dabei bin: Kann man das RecognizerIntent
auch ohne dieses Fenster starten?
 

Crash123

Erfahrenes Mitglied
Im übrigen, auch wenn der Beitrag schon sehr alt ist:

Wenn man den RecognitionListener verwendet gibt es kein Fenster.
Genutzt wird er mit einem android.speech.SpeechRecognizer Objekt.

Code:
package listener;

import com.example.lbsmart.SceneActivity;

import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;

public class SpeechRecognizerListener implements RecognitionListener {

	private SpeechRecognizer sr;
	private MyActivity context;
	
	public SpeechRecognizerListener(MyActivity context) {
		super();
		this.context = context;
		
		sr = SpeechRecognizer.createSpeechRecognizer(context);
		sr.setRecognitionListener(this);
		
    	        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    	
		intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
		intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "de-DE");
		intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"com.example.test");
		
		sr.startListening(intent);
	}

	@Override
	public void onBeginningOfSpeech() {
		// TODO Auto-generated method stub

	}

	@Override
	public void onBufferReceived(byte[] arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onEndOfSpeech() {
		// TODO Auto-generated method stub

	}

	@Override
	public void onError(int arg0) {
                /*der einzige Error der mir echte Probleme gemacht hat
                * weitere Error´s könnt ihr nachlesen unter:
                * http://developer.android.com/reference/android/speech/SpeechRecognizer.html
                */
		if(arg0 != SpeechRecognizer.ERROR_RECOGNIZER_BUSY)
			System.out.println("Recognizer busy");
	}

	@Override
	public void onEvent(int arg0, Bundle arg1) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onPartialResults(Bundle arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onReadyForSpeech(Bundle arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onResults(Bundle arg0) {
                //Ausgabe des Ergebnisses
		System.out.println(arg0.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION).get(0));
	}

	@Override
	public void onRmsChanged(float arg0) {
		// TODO Auto-generated method stub

	}
}