gpt4 book ai didi

android - 如何让动画与 Android 中的 TextToSpeech 话语同时播放

转载 作者:行者123 更新时间:2023-11-29 01:55:03 25 4
gpt4 key购买 nike

我的 ChordActivity 应用程序中有一组按钮,采用 LinearLayout。单击按钮时,我希望 TextToSpeech 引擎说出所单击按钮的名称(例如 Minor 7th),这工作正常。我还希望出现按钮“弹出然后返回”的动画,我也在工作。问题是无论我如何安排代码,语音都是先发生,然后是动画。我希望它们同时发生。我知道 TextToSpeech 有自己的消息队列,所以我假设如果我使用 runnable 来制作动画,我可以让语音和动画同时发生,但事实并非如此。然后我退出了 runnable,现在有以下代码。有人对此有解决方案吗?非常感谢。

private void speakChordMessage(View v) {
image = (ImageView) v;
image.startAnimation(animScale);
chordTTS.playSilence(2000, TextToSpeech.QUEUE_FLUSH, null);
chordTTS.speak(str1, TextToSpeech.QUEUE_FLUSH, null);
while (chordTTS.isSpeaking()) {
}
}

animscale.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator" >
<scale
android:duration="200"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="100%"
android:pivotY="0%"
android:repeatCount="1"
android:repeatMode="reverse"
android:startOffset="0"
android:toXScale="1.3"
android:toYScale="1.25" />
</set>

最佳答案

如果您添加 AnimationListener在调用 startAnimation 之前添加到动画,你将有一个回调

public void onAnimationStart(Animation animation){}

动画与 TextToSpeech 引擎并不完全不同,它被添加到队列系统中并且不会立即执行。如果您在 onAnimationStart() 中调用 chordTTS.speak(),它应该会大大减少您看到的延迟。从那里开始,您可能需要尝试小的延迟以达到预期的效果。

关于android - 如何让动画与 Android 中的 TextToSpeech 话语同时播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15687775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com