我有许多使用TTS和语音识别的代码段。但是,如果一行中有多个tts或连续多个语音识别,则它会完全崩溃或跳过它们。有时它会继续通过代码而不等待识别完成,这将导致以后崩溃和不正确的变量。如何让我的应用程序暂停并等待完成?我已经研究过wait,枚举器,子例程,但似乎没有解决问题。任何帮助将不胜感激。
答案 0 :(得分:1)
使用TTS时,请尝试在TTS类上扩展UtteranceProgressListener
(API级别15或更高级别)。
这里Android documentation了解如何使用该抽象类。那个抽象类包括
方法public void onDone(String utteranceId){}
当你的演讲完成时会打电话。
对于语音识别,如果您使用RecognitionListener
,则会在语音识别结束时调用方法public void onResults (Bundle arg0)
并为您提供结果。
所以现在你知道TTS和语音识别何时完成。只需尝试在TTS onDone()或语音识别onResult中运行一些代码。希望这会有所帮助。