Natknąłem się na ten też.
To było dokładnie rok odkąd zadał to pytanie i odpowiedź nie jest w horyzoncie ...
Więc mogę się tylko domyślać, że ten, kto napisał ten fragment kodu ma to oznaczać
"tylko wtedy, gdy mówi się ostatni wypowiedź".
Czy to ma sens?
Jedynym problemem jest to, że niezależnie od tego, czy w QUEUE_ADD
lub QUEUE_FLUSH
trybie obserwacje empiryczne wskazują, że istnieją poważne warunki wyścigowe rozrządu zaangażowane:
isSpeaking()
zawsze wróci fałszywy jeśli wezwany onUtteranceCompleted()
.
isSpeaking()
zawsze zwróci prawdziwą Jeśli wywołana natychmiast po pierwszytts.speak()
po onUtteranceCompleted()
.
isSpeaking()
zawsze powróci fałszywy Jeśli wywołana natychmiast po tts.speak()
że ma co najmniej jeden więcej tts.speak()
s oddzielające między ostatnim onUtteranceCompleted()
i sobie.
W pewnym sensie, to zachowuje się dokładnie naprzeciwko "przeznaczone":
"tylko wtedy, mówiąc pierwszy wypowiedź" (po onUtteranceCompleted())
Dlaczego zachowuje się tak, jak to jest poza mną, ale to przynajmniej to, co pokazuje LogCat.
Należy również zauważyć następujący dodatek do official documentation.
"Należy zauważyć, że element mowy jest uważana za kompletną raz to dane audio został wysłany do miksera audio, lub zapisać do pliku nie może być skończony lag pomiędzy tym punktem, a gdy sprzęt audio uzupełnia odtwarzania. "
W oth er słów, ta metoda jest całkowicie bezużyteczna.