Estoy tratando de obtener la API de Android TTS para leer mi "enunciado" y luego llamar al oyente onUtteranceCompleted() sin éxito. He registrado mi objeto TTS y devuelve ÉXITO, por lo que no puedo entender por qué mi devolución de llamada no se llama.Android TTS onUtteranceLa devolución de llamada completa no se llama
He intentado buscar ayuda, pero parece que otros tienen dificultades con esto también. ¿Me estoy perdiendo algo simple?
Gracias por cualquier ayuda que pueda ofrecer.
package com.test.mytts;
import java.util.HashMap;
import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener;
import android.widget.TextView;
import android.widget.Toast;
public class MyTTS extends Activity implements OnInitListener, OnUtteranceCompletedListener
{
TextView tv;
private TextToSpeech _tts;
@Override
public void onCreate(Bundle savedInstanceState)
{
tv = new TextView(this);
tv.setText("MyTTS: ");
super.onCreate(savedInstanceState);
setContentView(tv);
_tts = new TextToSpeech(this, this);
}
@Override
public void onInit(int status)
{
HashMap<String, String> myHashAlarm = new HashMap<String, String>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_NOTIFICATION));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "test");
if (status == TextToSpeech.SUCCESS)
{
Toast.makeText(this, "Trying to speak...", Toast.LENGTH_SHORT).show();
int result = _tts.setOnUtteranceCompletedListener(this);
tv.append(String.valueOf(result));
_tts.setSpeechRate((float) .5);
_tts.speak("Testing one, two, three", TextToSpeech.QUEUE_ADD, myHashAlarm);
}
else
Toast.makeText(this, "Failed to initialize TTS.", Toast.LENGTH_SHORT).show();
}
@Override
public void onUtteranceCompleted(String utteranceId)
{
Toast.makeText(this, "onUtteranceCompleted", Toast.LENGTH_SHORT).show();
}
@Override
public void onDestroy()
{
super.onDestroy();
_tts.shutdown();
}
}
No veo nada malo con lo que tiene, pero probablemente sea mejor usar las declaraciones de registro que las tostadas para rastrear qué está sucediendo. Luego puede revisar el pedido en logcat. –
creo que esto le ayudará a: [http://stackoverflow.com/questions/4658376/how-to-know-when-tts-is-finished][1] [1]: http: //stackoverflow.com/questions/4658376/how-to-know-when-tts-is-finished – uriellabs