OnUtteranceCompleted не вызван?

Даже если я правильно его установлю:

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

Вызвать 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);