トレーニング目的でニーモニックや数学の演習を実行する簡単な 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 エンジンで使用される新しい質問または回答でフィールドを変更することはできません。
何か案は?