Android 如何在“文本到语音”处于活动状态时操作seekbar和textview

Android 如何在“文本到语音”处于活动状态时操作seekbar和textview,android,android-asynctask,text-to-speech,seekbar,Android,Android Asynctask,Text To Speech,Seekbar,我有一个很小的例子,我想点击一个按钮,从MainActivity更改为一个不同的活动(倒计时),该活动将倒计时,然后返回Main。我希望倒计时能够在文本视图中反映出来,同时大声说出。我还想使用seekbar来控制每次倒计时之间的延迟。 我希望所有与TTS相关的代码都是正确的,也就是说,我认为我必须在“onInit”部分中执行“for”循环(或者我如何才能确保TTS引擎已初始化并准备就绪?)。我还想控制延迟(目前通过seekbar在“playsilentutrance”调用中硬编码为“2000”,

我有一个很小的例子,我想点击一个按钮,从MainActivity更改为一个不同的活动(倒计时),该活动将倒计时,然后返回Main。我希望倒计时能够在文本视图中反映出来,同时大声说出。我还想使用seekbar来控制每次倒计时之间的延迟。 我希望所有与TTS相关的代码都是正确的,也就是说,我认为我必须在“onInit”部分中执行“for”循环(或者我如何才能确保TTS引擎已初始化并准备就绪?)。我还想控制延迟(目前通过seekbar在“playsilentutrance”调用中硬编码为“2000”,但不确定正确的方式是什么(全局变量?)

这是第二项活动的代码:

public class CountDown extends Activity implements TextToSpeech.OnInitListener,SeekBar.OnSeekBarChangeListener {

    TextView txtCount;
    TextView txtSeekBar;
    SeekBar seekBar;

    private TextToSpeech mTts;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_count_up);

        txtCount = (TextView) findViewById(R.id.txtCount);
        txtSeekBar = (TextView) findViewById(R.id.txtSeekBar);
        seekBar = (SeekBar) findViewById(R.id.seekBar);

        mTts = new TextToSpeech(this, this);
        mTts.setLanguage(Locale.US);
    }

    public void onInit(int i)
    {
        mTts.speak("Starting Countdown", QUEUE_FLUSH, null);

        for(int number=5; number>0; number--){

            mTts.speak(number + "", QUEUE_ADD, null);

            mTts.playSilentUtterance(2000, QUEUE_ADD, null);

            txtCount.setText(number+"");
        }

        Intent intent2Training = new Intent(CountDown.this, MainActivity.class);
        setResult(Activity.RESULT_OK,intent2Training);

        while (mTts.isSpeaking()) {
        }

        finish();
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        txtSeekBar.setText(seekBar.getProgress() + " / " + seekBar.getMax());
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {}

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {}

}

嗯,我试着把tts的东西放到一个异步任务中,现在seekbar可以工作了(我还可以更新我的文本视图,这在以前不起作用),但现在我无法让tts真正发言。所以从煎锅到火中?啊,更正,异步任务是正确的方式,现在我可以移动seekbar,文本视图将与发言并行更新。我的缺点是,我注释掉了所需的代码,并忘了在调试狂热期间取消注释。。。