IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

TextToSpeech, threads, Activity is not responding


Sujet :

Android

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Par défaut TextToSpeech, threads, Activity is not responding
    Si quelqu'un pouvait m'aider, j'y suis depuis des heures, c'est à s'arracher les cheveux.

    Alors je vous expose mon problème :
    je veux faire une sorte de lecteur qui lirait un texte passé en paramètre. Il y aurait les boutons lecture, pause, stop.

    C'est le "pause" qui me pose problème (notez le jeu de mots ), puisqu'il n'existe pas de méthode qui permette de faire une "pause" dans le TextToSpeech, et encore moins de reprendre la lecture là où elle en était.
    Du coup, j'ai décidé de faire un thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    package com.vision.topAndroid;
     
    import android.speech.tts.TextToSpeech;
     
    import com.vision.topAndroid.util.GeneralData;
     
     
    public class SpeechThread extends Thread{
     
    	private String texte;
    	private boolean pause = false;
     
    	public SpeechThread(String texte){
    		this.texte = texte ;
    	}
     
    	@Override
    	public void run() {
    		GeneralData.TTS.speak(texte, TextToSpeech.QUEUE_FLUSH, null);
    	}
     
    	public void arret(){
    		GeneralData.TTS.stop();
    	}
     
    	public synchronized void pause(){
    		pause = true;
    		while(pause){
    			try {
    				this.wait();
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
     
    	public synchronized void restart(){
    		pause = false;
    		notifyAll();
    	}
    }
    Le problème, c'est que lorsque je clique sur mon bouton pause, l'application ne réagit plus (même le bouton "stop" qui fonctionne ne marche plus après avoir cliqué sur "pause"), la lecture du texte continue, et sur mon émulateur au bout de quelques secondes (après de nombreux clics forcenés, je l'admets), le message "Error, Activity is not responding" apparaît!

    Je ne sais pas si mon problème provient de ma gestion des threads (qui pourtant me semble correcte ; j'ai toujours fait ainsi en Java classique) ou du TextToSpeech.

    Si quelqu'un peut me donner ne serait-ce que des pistes, je suis preneuse!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Par défaut
    Je viens de régler un problème, je n'ai plus l'erreur "Application is not responding", cette erreur était dûe au code qui appelait cette classe (j'avais mis thread.run() au lieu de thread.start()!).
    Mais le bouton "pause" ne marche toujours pas

  3. #3
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,

    De toute façon, avec la classe TextToSpeech, tu pourras pas faire de pause. Quand tu lances la synthèse d'un texte, ce texte est pushée dans une liste de lecture. Tu peux juste éventuellement stopper complétement la synthèse en cours, mais pas la mettre en pause.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Par défaut
    Est-ce que tu saurais dans ce cas s'il est possible de manipuler directement l'audio du téléphone? Ce serait certes plus bas niveau mais ça m'arrangerait réellement!

  5. #5
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    une solution alternative et rapide, si tu veux vraiment du play/pause/stop serait de synthétiser le texte voulu dans un fichier audio. Puis de lire ce fichier audio avec un composant mediaplayer dans ton application.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 60
    Par défaut
    Oui, ce que j'étais en train de faire!

    Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Eviter le NOT RESPONDING ?
    Par lbar012001 dans le forum VBA Access
    Réponses: 1
    Dernier message: 21/09/2010, 17h42
  2. Réponses: 0
    Dernier message: 19/04/2010, 15h02
  3. X may not respond to Y
    Par Invité dans le forum Apple
    Réponses: 3
    Dernier message: 22/03/2010, 12h35
  4. Réponses: 1
    Dernier message: 08/03/2010, 09h13
  5. Réponses: 2
    Dernier message: 03/02/2010, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo