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); ;
}

期待どおりに動作しますが、以下の 2 つのケースでは失敗します。どちらの場合も、「ヘルプ音声」が繰り返し聞こえますが、「停止ボタン」を押しても停止できませんでした。

画面が回転するとttsオブジェクトがシャットダウンされ、画面が回転した後、ttsオブジェクトが復元されると思います。「runOnUiThread」からのリクエストが継続しているため、「ヘルプ音声」が引き続き聞こえます。しかし、「停止ボタン」を押しても停止できないことがわかりました。上記のコードを見て、どこが間違っているのか教えてください。ありがとう!

4

0 に答える 0