onUtteranceCompleted не вызывается? - PullRequest
10 голосов
/ 11 июля 2011

Даже при правильной настройке:

HashMap<String, String> myHashRender = new HashMap<String, String>();
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "utid");
mTts.speak("Speak something", TextToSpeech.QUEUE_ADD, myHashRender);

также

mTts.setOnUtteranceCompletedListener(this);

в функции onInit возвращает успех.Тем не менее onUtteranceCompleted не вызывается.Хотя есть повторяющиеся вопросы, но я не смог найти ответ.

Моя деятельность также реализует OnUtteranceCompletedListener.

Пожалуйста, помогите.

1 Ответ

18 голосов
/ 20 августа 2011

Вызовите setOnUtteranceCompletedListener внутри функции onInit объекта tts.

Если вы хотите внести какие-либо изменения в интерфейс пользователя при вызове функции onUtteranceCompleted, добавьте код в метод runOnUIThread.

И не забудьте добавить значение параметра Hashmap при вызове функции speak ()

Пример:

TextToSpeech tts= new TextToSpeech(context, new OnInitListener() {

 @Override
 public void onInit(int status) {

    mTts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {

        @Override
        public void onUtteranceCompleted(String utteranceId) {

            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                //UI changes
                }
            });
        }
    });

 }
});


HashMap<String, String> params = new HashMap<String, String>();

params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"stringId");

tts.speak("Text to Speak",TextToSpeech.QUEUE_FLUSH, params);
...