I am developing android application in which I am using text to speech conversion.What I need when I open my application run text to speech conversion. After completion of this I want to do some thing.My code looks like
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();
}
}
}
When I open my application text to speech working fine. But how to detect whether text to speech completed or not.Need help..... Thank you.....
If you are using API level 15 or later you can set a progress listener on your TextToSpeech
reference using
setOnUtteranceProgressListener(UtteranceProgressListener listener)
You will get callbacks reporting the progress of the TTS, including a callback when it is finished. See http://developer.android.com/reference/android/speech/tts/TextToSpeech.html and http://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html
However, I notice that you're already using the deprecated OnUtteranceCompletedListener
. Are you getting the callbacks on onUtteranceCompleted()
? That should also work.