Si quelqu'un pouvait m'aider, j'y suis depuis des heures, c'est à s'arracher les cheveux.:evilred:
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 :lol:), 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 :
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!Code:
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(); } }
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!