I'm developing an app which would read out the text in the document and I want to add a pause and resume functionality but I can't find any pause() method in TTS. Is there any way that I can pause..?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
There is a way to pause. Just call TextToSpeech.playSilence()
see the code below from here.
It speaks some actual text along with some silence.
private void playScript()
{
Log.d(TAG, "started script");
// setup
// id to send back when saying the last phrase
// so the app can re-enable the "speak" button
HashMap<String, String> lastSpokenWord = new HashMap<String, String>();
lastSpokenWord.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,
LAST_SPOKEN);
// add earcon
final String EARCON_NAME = "[tone]";
tts.addEarcon(EARCON_NAME, "root.gast.playground", R.raw.tone);
// add prerecorded speech
final String CLOSING = "[Thank you]";
tts.addSpeech(CLOSING, "root.gast.playground",
R.raw.enjoytestapplication);
// pass in null to most of these because we do not want a callback to
// onDone
tts.playEarcon(EARCON_NAME, TextToSpeech.QUEUE_ADD, null);
tts.playSilence(1000, TextToSpeech.QUEUE_ADD, null);
tts.speak("Attention readers: Use the try button to experiment with"
+ " Text to Speech. Use the diagnostics button to see "
+ "detailed Text to Speech engine information.",
TextToSpeech.QUEUE_ADD, null);
tts.playSilence(500, TextToSpeech.QUEUE_ADD, null);
tts.speak(CLOSING, TextToSpeech.QUEUE_ADD, lastSpokenWord);
}
回答2:
the TextToSpeech class has the ability to add a setOnUtteranceCompletedListener (or for api level 15+ setOnUtteranceProgressListener) which will let you attach a listener for when the TTS utterence is completed and then you can start your second utterence, or your pause, or whatever you need..