我开发了一个必须使用TTS引擎的应用程序。
现在的问题是我需要等到TTS引擎初始化,虽然我使用的是睡眠方法,但效果不佳。
这是我的代码
public void onCreate(Bundle savedInstanceState) {
......
Intent checkin = new Intent();
checkin.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkin, MY_DATA_CHECKCODE1);
//l.setOnTouchListener(this);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
tts.speak("Enter sms", TextToSpeech.QUEUE_FLUSH, null);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECKCODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
tts = new TextToSpeech(this, this);
tts.setLanguage(Locale.US);
tts.setSpeechRate((float) 0.4);
}
}
}
而不是以上睡眠方法我需要等到TTS引擎不是
initialized.so如何编写一个整齐的代码块来恢复当前的活动
TTS引擎已初始化,而不是进行硬编码以检查循环是否为TTS
已初始化。(我甚至不知道如何做到这一点)。
应用程序运行到非响应状态并抛出Null指针异常
当我使用
时tts.speak("Enter sms", TextToSpeech.QUEUE_FLUSH, null);
方法。所以请建议我解决这个问题的方法。我用Google搜索但找不到合适的答案。
答案 0 :(得分:0)
使用AsyncTask
启动TTS引擎,您将在调用onPostExecute
时知道它已完成:
http://developer.android.com/reference/android/os/AsyncTask.html