onUtteranceCompleted запускается на эмуляторе, но не на оборудовании - PullRequest
0 голосов
/ 15 февраля 2012

Я не могу получить срабатывание onUtteranceCompleted () на моем Galaxy Nexus 4.0.2.Мои эмуляторы с API 8, 10 и 15 запускают onUtteranceCompleted ().Я потратил около 5 часов и прочитал каждый пост на stackoverflow об этом, и я не заставляю его работать.Я был бы очень рад, если бы кто-нибудь смог мне помочь; (Я довольно новичок в Android, поэтому было бы здорово, если бы вы могли объяснить это новичкам.

edit: хорошо ... приведенное выше утверждение вернов большинстве случаев я просто заставил его работать на моем оборудовании 4.0.2. Затем я закрыл его и снова запустил, и onUtteranceCompleted () сделал не снова запущен. То же самое вчера (до некоторогокод меняется), поэтому он не работает в 90% случаев. Не могу понять; (

edit2: FYI: mTts.setOnUtteranceCompletedListener (this); возвращает TextToSpeech.SUCCESS

Большое спасибо!

Вот мой код:

(...)
    public void onInit(int status) {            
mTts.setOnUtteranceCompletedListener(this);

if (status == TextToSpeech.SUCCESS) {    
    int result = mTts.setLanguage(Locale.US);
    if (result == TextToSpeech.LANG_MISSING_DATA ||
        result == TextToSpeech.LANG_NOT_SUPPORTED) {
        Log.e(TAG, "Language is not available.");
    } else {
        TTSAusgabe.setEnabled(true);
    }
} else {
    Log.e(TAG, "TTS failed");
}    
}


SayText() {  (....)
MundAnimation.start();
HashMap<String, String> params = new HashMap<String, String>();
params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "utterance");
mTts.speak("Ma Text", TextToSpeech.QUEUE_FLUSH, params);
  } 
}


// That's the bad boy!
public void onUtteranceCompleted(String utterance) 
{
MundAnimation.stop();
    //startVoiceRecognitionActivity();
System.out.println("drin"); 
}
(...)

1 Ответ

0 голосов
/ 01 марта 2012

Поскольку у вас есть проблема, которая возникает только иногда, проблема должна быть связана с асинхронной природой инициализации TextToSpeech.Я иногда видел сбой TextToSpeech, когда мой код устанавливает свойство TextToSpeech до вызова onInit ().

Я подозреваю, что вы активировали SayText () до того, как TextToSpeech вызвал onInit ().Это будет происходить только несколько раз.

Похоже, у вас есть правильный код, который устанавливает onUtteranceCompletedListener во время onInit (), но, возможно, это также имеет проблему с синхронизацией.

...