Invité hardrocky Posté(e) 24 février 2013 Share Posté(e) 24 février 2013 Bonjour à tous. Dans le but de savoir quand mon énonciation lors d'un TTS est finie, j'ai écrit cela à la fin du onInit en suivant la doc officielle. tts.setOnUtteranceProgressListener(new UtteranceProgressListener() { @Override public void onDone(String utteranceId) { Toast.makeText(getApplicationContext(), "Done", Toast.LENGTH_LONG).show(); } @Override public void onerror(String utteranceId) { } @Override public void onstart(String utteranceId) { Toast.makeText(getApplicationContext(), "Start", Toast.LENGTH_LONG).show(); } }); Problème, ca ne marche pas. Une idée ? Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
pauland Posté(e) 24 février 2013 Share Posté(e) 24 février 2013 2 choses: LA première, comme je te l'ai dit sur Google+, tu dois préciser un paramètre lors de l'appel à speak: public void say(String text2say) { HashMap<String, String> hm = new HashMap<String, String>(); hm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "toto"); this.talker.speak(text2say, TextToSpeech.QUEUE_ADD, hm); } Sans ça, le listener renseigné par setOnUtteranceProgressListener ne sera jamais appelé. Ensuite, dans ton init du tts, tu renseignes comme tu l'a fais un listener. Par contre, ce listener ne s'execute pas dans une même thread, tu devras donc crer un runnable, que tu run sur le thread de l'ui, comme ceci: @Override public void onInit(int status) { this.talker.setOnUtteranceProgressListener(new UtteranceProgressListener() { @Override public void onstart(String utteranceId) { } @Override public void onerror(String utteranceId) { } @Override public void onDone(final String utteranceId) { Runnable run = new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, "Le speaker " + utteranceId + " a fini de parler", Toast.LENGTH_LONG).show(); } }; MainActivity.this.runOnUiThread(run); } }); this.say("Hello World"); } Lien vers le commentaire Partager sur d’autres sites More sharing options...
Invité hardrocky Posté(e) 24 février 2013 Share Posté(e) 24 février 2013 Merci, ca marche super, je te réponds sur Twitter. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.