我在屏幕上显示文字,在我的代码中,我试图在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帧!应用程序可能在其主线程上做了太多工作。”