Incapable de détecter l'achèvement de TTS (rappel) d'android.
Je développe une application android dans lequel je suis à l'aide du texte à la parole de conversion.Ce dont j'ai besoin, quand j'ouvre mon exécution de l'application du texte à la parole de conversion. Après l'achèvement de ce que je veux faire quelque chose.Mon code ressemble à
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();
}
}
}
Quand j'ouvre mon application du texte à la parole fonctionne bien. Mais comment détecter si le texte à la parole rempli ou non.Besoin d'aide..... Merci.....
OriginalL'auteur nilkash | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez l'API de niveau 15 ou plus tard, vous pouvez définir un progrès d'écoute sur votre
TextToSpeech
de référence à l'aide deVous recevrez des rappels de rapports sur les progrès de la TTS, y compris un rappel lorsqu'il est terminé. Voir http://developer.android.com/reference/android/speech/tts/TextToSpeech.html et http://developer.android.com/reference/android/speech/tts/UtteranceProgressListener.html
Cependant, je remarque que vous utilisez déjà l'obsolète
OnUtteranceCompletedListener
. Êtes-vous d'obtenir les rappels suronUtteranceCompleted()
? Cela devrait également fonctionner.Vous appelez
int result = tts.setOnUtteranceCompletedListener(thi s);
pour définir l'auditeur. Vérifiez la valeur de laresult
variable. SUCCÈS (0) ou d'ERREUR (-1) devrait revenir. Aussi, ajouter un peu de journalisation pouronUtteranceCompleted()
pour voir si elle est là. Vérifiez aussi votre logcat pour toutes les autres erreurs étranges.Merci, david, merci pour la réponse. Son travail très bien.J'ai utiliser la journalisation au lieu de pain grillé et sa fonctionne très bien. Merci...
OriginalL'auteur David Wasser
Appeler le setOnUtteranceCompletedListener à l'intérieur de la fonction onInit de la tts objet.
Si vous souhaitez apporter des modifications à l'INTERFACE utilisateur sur l'appel de la onUtteranceCompleted fonction, ajoutez le code à l'intérieur d'un runOnUIThread méthode.
Et n'oubliez pas d'ajouter la table de hachage param valeur tout en appelant la parole() la fonction
Exemple :
OriginalL'auteur sm abbas
Voici un code de ici qui vous aide à être compatible en amont, de sorte que vous n'avez pas de cible 15.
OriginalL'auteur gregm