Si no desea utilizar el RecognizerIntent
hacer el reconocimiento de voz, que aún se podía utilizar la clase SpeechRecognizer para hacerlo. Sin embargo, usar esa clase es un poco más complicado que usar la intención. Como nota final, sugiero que el usuario sepa cuándo está grabado, de lo contrario podría estar muy configurado cuando finalmente lo descubra.
Editar: Un pequeño ejemplo inspirado (pero cambiado) de this stack overflow entry
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
"com.domain.app");
SpeechRecognizer recognizer = SpeechRecognizer
.createSpeechRecognizer(this.getApplicationContext());
RecognitionListener listener = new RecognitionListener() {
@Override
public void onResults(Bundle results) {
ArrayList<String> voiceResults = results
.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
if (voiceResults == null) {
Log.e(TAG, "No voice results");
} else {
Log.d(TAG, "Printing matches: ");
for (String match : voiceResults) {
Log.d(TAG, match);
}
}
}
@Override
public void onReadyForSpeech(Bundle params) {
Log.d(TAG, "Ready for speech");
}
@Override
public void onError(int error) {
Log.d(TAG,
"Error listening for speech: " + error);
}
@Override
public void onBeginningOfSpeech() {
Log.d(TAG, "Speech starting");
}
@Override
public void onBufferReceived(byte[] buffer) {
// TODO Auto-generated method stub
}
@Override
public void onEndOfSpeech() {
// TODO Auto-generated method stub
}
@Override
public void onEvent(int eventType, Bundle params) {
// TODO Auto-generated method stub
}
@Override
public void onPartialResults(Bundle partialResults) {
// TODO Auto-generated method stub
}
@Override
public void onRmsChanged(float rmsdB) {
// TODO Auto-generated method stub
}
};
recognizer.setRecognitionListener(listener);
recognizer.startListening(intent);
Importante: Ejecutar el código de la interfaz de usuario de rosca.
¿Estás tratando de preguntar si necesita grabadora de voz sin necesidad de invocar la interfaz de usuario. –
Quiero hablar a texto sin invocar la interfaz de usuario de speak speak típica. Quiero que se realice en segundo plano de la aplicación que estoy ejecutando actualmente. – RenegadeAndy