正在播放TextToSpeech时突出显示文本

时间:2015-08-13 16:03:28

标签: java android text-to-speech

我在屏幕上显示文字,在我的代码中,我试图在TextToSpeech开始讲话之前突出显示文本,并在完成后将颜色更改回原始颜色。但是,它永远不会将颜色变为蓝色或至少是它的样子。

这就是启动TextToSpeech

的原因
ImageView playButton = (ImageView) blankPage.findViewById(R.id.play_button);
    playButton.setOnClickListener(new View.OnClickListener()

                                  {
                                      @Override
                                      public void onClick(View v) {
                                          findHighlightedWords();


                                          mTts.setSpeechRate(0.60f);
                                          play(mWordsToSpeechBank, mHighlightedTextViews);
   }
}

这是播放方法

@SuppressWarnings("deprecation")

private void play (ArrayList<String> playMe, ArrayList<TextView> highlightedWords){

    if (playMe.size() > 0) {
        final ArrayList<String> wordsToPlay = new ArrayList<String>(playMe);
        final ArrayList<TextView> highLightedTextView = new ArrayList<TextView>(highlightedWords);

        final TextView textView = highLightedTextView.get(0);

        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setBackgroundColor(Color.BLUE);
            }
        });

        String getFirst = wordsToPlay.get(0);
        wordsToPlay.remove(0);
        highLightedTextView.remove(0);

        mTts.speak(getFirst, TextToSpeech.QUEUE_FLUSH, null);

        do {

        } while (mTts.isSpeaking());

        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                textView.setBackgroundColor(Color.YELLOW);
            }
        });
        play(wordsToPlay, mHighlightedTextViews);
    }
}

当我看到日志时,它说 “编舞:跳过206帧!应用程序可能在其主线程上做了太多工作。”

0 个答案:

没有答案