Android для преобразования текста в речь: onUtteranceCompleted () не запущен - PullRequest
1 голос
/ 19 февраля 2012

Я работаю над приложением преобразования текста в речь, и onUtteranceCompleted никогда не запускается. Вот мой код:

    public class MyActivity extends Activity implements OnInitListener, OnUtteranceCompletedListener {

        private TextToSpeech tts;
        private HashMap<String, String> hashAudio;

        public void onInit(int status) {
            if (status == TextToSpeech.SUCCESS) {

                //defining hashAudio, its music!
                this.hashAudio = new HashMap<String, String>();
                this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_MUSIC));
                this.tts.setOnUtteranceCompletedListener(this);

                this.readEnglish();
            }
        }


    public void readEnglish(){
            Log.v("MESSAGE", "reading english"); //gets shown

            this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "english");
            this.tts.setLanguage(Locale.US);
            this.tts.speak("TEST", TextToSpeech.QUEUE_FLUSH, this.hashAudio);
           //gets read
        }

    public void onUtteranceCompleted(String uttId) {
            Log.v("MESSAGE", "Uterrance Completed");
            //never see this message
        }

Кто-нибудь знает почему? Я рассмотрел несколько тем здесь с некоторыми решениями, но ничего не помогло :(. Я также внимательно прочитал документацию по Android: (.

Спасибо

1 Ответ

3 голосов
/ 20 февраля 2012

Хорошо, так что я понял это сам, единственная проблема в моем коде заключалась в том, что

this.tts.setOnUtteranceCompletedListener(this);

был вызван после создания Hashmap.Таким образом, окончательный код должен выглядеть следующим образом:

this.tts.setOnUtteranceCompletedListener(this);
this.hashAudio = new HashMap<String, String>();
this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_STREAM,String.valueOf(AudioManager.STREAM_MUSIC));
...