0

我有一个 TTS 对象。此 TTS 对象重复单词“帮助”。我有一个布尔标志。当此标志设置为 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.按主页按钮并重新打开暂停的应用程序。在这两种情况下,我发现我仍然可以反复听到“帮助声音”,但我无法通过按下“停止按钮”来停止它。

我想当屏幕旋转时, tts 对象被关闭,屏幕旋转后, tts 对象被恢复。来自“runOnUiThread”的请求继续,因此我仍然可以听到“帮助声音”。但事实证明我无法通过按“停止按钮”来停止它。请查看上面的代码并告诉我错误的逻辑在哪里。谢谢!

4

0 回答 0