我有一个TTS对象。该TTS对象重复单词'help'。我有一个布尔标志。当此标志设置为false时,while循环中断,TTS对象停止。下面是代码。基本上,tts在OnCreate中启动,并在OnDestroy中销毁。有一个启动tts的按钮和一个停止tts的按钮。
protected void onCreate(Bundle savedInstanceState) {
....
IniTts();
}
@Override
protected void onDestroy()
{
if (_tts != null)
{
_tts.shutdown();
}
super.onDestroy();
}
public OnBottonPressedStartShutting() {
_tts.speak("help", TextToSpeech.QUEUE_FLUSH, myHashAlarm);
}
public OnBottonPressedStopShutting() {
bContinueTtsPlay = false;
}
public void onUtteranceCompleted(String uttId) {
this.runOnUiThread(new Runnable() {
public void run() {
if (bContinueTtsPlay == true) _tts.speak("help", TextToSpeech.QUEUE_FLUSH, myHashAlarm); ;
}
它按预期工作但在以下两种情况下失败: 1.我旋转屏幕 2.按home键并重新打开暂停的应用程序。 在这两种情况下,我发现我仍然可以反复听到“帮助声音”,但我无法通过按下“停止按钮”来阻止它。
我想当屏幕旋转时,tts对象会关闭,屏幕旋转后,tts对象会恢复。来自'runOnUiThread'的请求继续,因此我仍然可以听到'帮助声音'。但事实证明我无法通过按“停止按钮”来阻止它。 请看一下上面的代码并告诉我错误的逻辑在哪里。 谢谢!