0

onUtteranceCompleted()GalaxyNexus4.0.2で解雇されません。API 8、10、および15を使用するエミュレーターは起動しますonUtteranceCompleted()

編集:まあ..上記のステートメントはほとんどの場合に当てはまります、私はちょうどそれを私のハードウェア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"); 
}
(...)
4

1 に答える 1

0

たまにしか発生しない問題があるため、問題はTextToSpeech初期化の非同期性が原因である必要があります。onInit()が呼び出される前にコードがTextToSpeechのプロパティを設定すると、TextToSpeechが失敗することがあります。

TextToSpeechがonInit()を呼び出す前に、SayText()をアクティブ化したと思われます。これは数回だけ発生します。

onInit()中にonUtteranceCompletedListenerを設定する正しいコードがあるように見えますが、おそらくタイミングの問題もあります。

于 2012-03-01T13:36:40.433 に答える