-->

如何访问布局TTS OnUtteranceCompleted回调?(How to access la

2019-09-21 17:02发布

我正在运行的助记符或数学练习用于训练目的的简单的Android程序。 我有一个“新的练习”按钮,改变问题和答案。 我想实现一个“文本到语音”模式,其中软件读取的问题和答案。 他们发言后,就应该算一个新的问题,然后重新开始。

我使用OnUtteranceCompleted,以确定是否语音已经结束。 我的问题是,我不能从回调访问我的“新运动”按钮。

我使用这样的:

private TextToSpeech.OnUtteranceCompletedListener onUtteranceCompleted = new TextToSpeech.OnUtteranceCompletedListener()
{
        @Override
        public void onUtteranceCompleted(String utteranceId)
        {
                if(0 == utteranceId.compareToIgnoreCase(END_OF_SPEECH))
                {
                        Log.i("TTS","Completed");
                        if (TTSMode == TTS_MODE_ON) {
                            //Start new
                             Log.i("TTS","TTS mode is on: start new exercize");
                            NewExercize();
                             btnNewEx.performClick();

                        }
                }

        }
};

我得到了以下错误:$ CalledFromWrongThreadException:只有创建视图层次可以触摸其观点原来的线程。

我能够产生新的问题/答案,但我不能使用该按钮与新的问题或答案,至极改变字段使用TTS引擎。

有任何想法吗?

Answer 1:

您需要使用runOnUiThread

context.runOnUiThread( new Runnable() {
    public void run() {
        btnNewEx.performClick();
    }
});

(你可以省略“背景。”如果“这”是一种活动或服务的子类)



文章来源: How to access layout in TTS OnUtteranceCompleted callback?