После еще нескольких часов просмотра кода я заметил, что проблема в том, что инициализация движка TTS занимает некоторое время.Если инициализация не закончена, вызов метода talk завершится неудачей.
Если вы «скажете» что-то по нажатию кнопки, это, вероятно, вам не понадобится, поскольку пользователю потребуется некоторое время, чтобы подумать, прежде чем нажать кнопкуи инициализация закончится.
Если вы хотите что-то сказать, как только инициализация завершится, используйте этот код:
talker = new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int arg0) {
if(arg0 == TextToSpeech.SUCCESS)
{
talker.setLanguage(Locale.US);
say(gameover,true);
say(line,false);
say(definition_string,false);
}
}
});