这是一个谈话头像的情况,动画和语音必须同步。
以下代码是按下发言按钮时调用的onClick函数。
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
avatarSpeak.stop();
tts1.setPitch(p1);
tts1.setSpeechRate(sr1);
String toSpeak = ed1.getText().toString();
createAnim(toSpeak, sr1);
lang = sp1.getSelectedItem().toString();
if (lang.equals("US")) {
System.out.print("Condition satisfied");
tts1.setLanguage(Locale.US);
} else if (lang.equals("UK"))
tts1.setLanguage(Locale.UK);
else if (lang.equals("Germany"))
tts1.setLanguage(Locale.GERMANY);
else if (lang.equals("Italy"))
tts1.setLanguage(Locale.ITALY);
else if (lang.equals("Japan"))
tts1.setLanguage(Locale.JAPAN);
else
tts1.setLanguage(Locale.CHINA);
Toast.makeText(getApplicationContext(), toSpeak, Toast.LENGTH_SHORT).show();
tts1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
tts1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null, null);
} else {
tts1.speak(toSpeak, TextToSpeech.QUEUE_FLUSH, null);
}
avatarSpeak.start();
}
});
您可以阅读代码 avatarSpeak 是animationDrawable,它会播放语音的动画。根据 createAnim 函数输入的文本,在代码中调用动画。只有在调用 speak 函数后才能调用动画函数来说出单词。
然而,当应用程序第一次运行时,动画首先播放,并在几秒钟延迟后发生语音。在动画之前调用语音时,如何发生这种情况。?
如果需要,我可以提供更多数据。