Bonjour à tous,
Je souhaite développer une application javafx qui réagit à des commandes vocales. j'ai déjà réalisé un code fonctionnel pour la partie reconnaissance vocale se basant sur CMU Sphinx.
Au lancement de mon main.java, le moteur de reconnaissance vocale est lancé (classe VoiceSphinx) dans un thread et lorsqu'une nouvelle commande est détectée, la classe VoiceSphinx qui implémente une interface ObservableVoice informe le main à travers l'implémentation d'une interface ObservateurVoice
(design pattern observateur)
Je souhaiterais maintenant pouvoir "faire passer" ce mot à une application javafx pour qu'elle l'affiche. Je peux implémenter l'interface ObservateurVoice dans la classe JavaFx mais comment puis-je faire pour "abonner" ma classe JavaFx, ou autrement dit comment l'instancier depuis le code Java ou récupérer une référence vers elle pour l'ajouter à la liste des observateurs ?
Extrait de code pour illustrer mon propos. Merci d'avance
Main.java
ObservateurVoice.java
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 public class Main{ private ObservateurVoice obsVoice1 ; private ObservateurVoice obsVoice2 ; private VoiceSphinx vs; public Main() { vs = new VoiceSphinx(); obsVoice1 = new ObservateurVoiceImpl(); vs.addObservateur(obsVoice1); // Mon problème est là, comment pour ajouter la classe javafx comme observateur //obsVoice2 = new ????(classe javaFx) //vs.addObservateur(obsVoice2); Thread t = new Thread(vs); t.start(); } public static void main(String args[]) { new Main(); } }
ObservateurVoiceImpl.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public interface ObservateurVoice { public void update(ResultVoice res); }
VoiceSphinx.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class ObservateurVoiceImpl implements ObservateurVoice{ public void update(ResultVoice res) { //TODO code qui réagit quand le main recoit une commande vocale System.out.println("Nouveau mot reçu : "+res.getCommandeComprise()); } }
Code classique des méthodes du pattern Observer
Partager