1
我正在尝试为Google Android的文本转语音功能创建包装类。但是,我很难找到一种方法让系统暂停,直到onInit函数完成。底部附带的是我根据我在此处找到的内容创建的解决方案:Android speech - how can you read text in Android?在Android中制作文本转语音包装器
但是,此解决方案似乎不起作用。有关为什么这可能不起作用的想法,或者为了确保在我的onInit()调用之后发生任何Speak()调用,这将是一个好主意吗?
公共类SpeechSynth实现OnInitListener {
private TextToSpeech tts;
static final int TTS_CHECK_CODE = 0;
private int ready = 0;
private ReentrantLock waitForInitLock = new ReentrantLock();
SpeechSynth(Activity screen)
{
ready = 0;
tts = new TextToSpeech(screen, this);
waitForInitLock.lock();
}
public void onInit(int status)
{
if (status == TextToSpeech.SUCCESS)
{
ready = 1;
}
waitForInitLock.unlock();
}
public int Speak(String text)
{
if(ready == 1)
{
tts.speak(text, TextToSpeech.QUEUE_ADD, null);
return 1;
}
else
{
return 0;
}
}
}
我已经能够让这个我可以通过构造函数传递文本字符串,然后把它在OnInit发挥()函数。但是,我真的很想避免每次需要让我的程序说出不同的内容时,必须销毁并重新创建整个文本到语音引擎。