我正在開發中,我使用文本到語音conversion.What我需要當我睜開應用程序運行文本到語音轉換android應用。完成後我想做一些事情。我的代碼看起來像無法檢測到TTS(回調)android的完成。
public class Mainactivity extends Activity implements OnInitListener, OnUtteranceCompletedListener{
private static int REQ_CODE = 1;
private TextToSpeech tts = null;
private boolean ttsIsInit = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startTextToSpeech();
}
private void startTextToSpeech() {
Intent intent = new Intent(Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, REQ_CODE);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQ_CODE) {
if (resultCode == Engine.CHECK_VOICE_DATA_PASS) {
tts = new TextToSpeech(this, this);
}
else {
Intent installVoice = new Intent(Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installVoice);
}
}
}
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
ttsIsInit = true;
int result = tts.setOnUtteranceCompletedListener(this);
if (tts.isLanguageAvailable(Locale.ENGLISH) >= 0)
tts.setLanguage(Locale.ENGLISH);
tts.setPitch(5.0f);
tts.setSpeechRate(1.0f);
HashMap<String, String> myHashAlarm = new HashMap<String, String>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_ALARM));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "SOME MESSAGE");
tts.speak("hi how are you?", TextToSpeech.QUEUE_FLUSH, myHashAlarm);
}
}
@Override
public void onDestroy() {
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
@Override
public void onUtteranceCompleted(String uttId) {
Toast.makeText(Mainactivity.this,"done", Toast.LENGTH_LONG).show();
if (uttId.equalsIgnoreCase("done")) {
Toast.makeText(Mainactivity.this,"inside done", Toast.LENGTH_LONG).show();
}
}
}
當我打開我的應用程序文本到語音工作正常。但如何檢測文本到語音是否完成。需要幫助.....謝謝.....
大衛你好我想你的解決方案,但它給了我錯誤setOnUtteranceProgressListener.And它onUtteranceCompleted在沒有錯誤的情況下執行,但不在onUtteranceCompleted中發送消息,因此有辦法解決此問題。無論我做任何事情wrong.Need幫助... – nilkash 2012-07-10 09:28:42
你叫'INT結果= tts.setOnUtteranceCompletedListener(THI爲s);'設置監聽器。檢查'result'變量的值。 SUCCESS(0)或ERROR(-1)應該回來。另外,將一些日誌記錄添加到'onUtteranceCompleted()'來查看它是否真的到達那裏。同時檢查你的logcat是否有其他奇怪的錯誤。 – 2012-07-10 10:13:54
謝謝大衛謝謝你的回覆。它的工作很好。我使用日誌而不是吐司,它的工作正常。謝謝... – nilkash 2012-07-10 10:24:48