You can only call speak()
after onInit() was called. So move your tts speak code in onCreate to onInit()
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
leftToRead = speakFull(res);
}
and initialize pause to true boolean paused = true;