Me encontré con este, también.
Ha sido exactamente un año desde que esta pregunta y no hay respuesta está en el horizonte ...
Así que solo puedo suponer que quien escribió esta pieza de código pretende que signifique
"solo si habla último enunciado".
¿Tiene esto sentido?
El único problema es que, independientemente del modo ya sea en QUEUE_ADD
o QUEUE_FLUSH
, observaciones empíricas sugieren que existen condiciones de carrera de tiempo graves implicados:
isSpeaking()
siempre devolverá falsa si se llama en onUtteranceCompleted()
.
isSpeaking()
siempre devolverá cierto si se llama inmediatamente después de la primera tts.speak()
después de una onUtteranceCompleted()
.
isSpeaking()
siempre devolverá falsa si se llama inmediatamente después de una tts.speak()
que tiene al menos uno más tts.speak()
s separan entre el último onUtteranceCompleted()
y ella misma.
En cierto modo, se comporta exactamente lo contrario de la "intención":
"sólo si habla el primera enunciado" (después de una onUtteranceCompleted())
Por qué se comporta como este me supera, pero al menos es lo que muestra LogCat.
También tenga en cuenta la siguiente adición a la official documentation:.
"Tenga en cuenta que un elemento de voz se considera completa una vez que esté datos de audio ha sido enviada al mezclador de audio, o escriba en un archivo que podría haber un retardo finito entre este punto y cuando el hardware de audio completa reproducción. "
En OTH Es decir, este método es totalmente inútil.