Autore Topic: Dialog con TextToSpeech  (Letto 641 volte)

Offline zazza991

  • Nuovo arrivato
  • *
  • Post: 2
  • Respect: 0
    • Mostra profilo
Dialog con TextToSpeech
« il: 27 Luglio 2013, 03:08:45 CEST »
0
Salve ho un problema, vorrei sapere se è possibile fare eseguire ad una dialog il text to speech. In pratica vorrei creare una Dialog parlante.
Io ho esteso la classe Dialog creandomi una mia Dialog personalizzata per permettere questo, ma ho problemi con il text to speech. In pratica onInit parte dopo la chiamata  del metodo speak e quindi da errore

Questa è la mia dialog
Codice (Java): [Seleziona]
public class MyDialogAlert extends AlertDialog.Builder {
        View layoutView;
        Context context;
        private TextToSpeech tts;

        protected MyDialogAlert(Context context) {
                super(context);
                this.context=context;
                tts = new TextToSpeech(context,new Listener());
               
        }
       
       
        @Override
        public Builder setView (View view){
                super.setView(view);
                layoutView = view;
                return null;
               
        }
       
        public int numView(){
                return ((ViewGroup)layoutView).getChildCount();
        }
       
@Override
public AlertDialog show(){
        super.show();
        View vv = ((ViewGroup)layoutView).getChildAt(0);
                if(vv instanceof TextView){
                        TextView txt = (TextView) vv;
                        tts.speak("ciao", TextToSpeech.QUEUE_FLUSH, null);
                }
                return null;
               
               
        }

       
        class Listener implements TextToSpeech.OnInitListener{
                @Override
                public void onInit(int arg0) {
                        // TODO Auto-generated method stub
                        if(arg0==TextToSpeech.SUCCESS){
                                tts.setLanguage(Locale.getDefault());
                                Log.i("TTS", "sono qui");
                                //tts.speak("ciao", TextToSpeech.QUEUE_FLUSH, null);
                        }
                }
        }
}

Offline matttt

Re:Dialog con TextToSpeech
« Risposta #1 il: 20 Agosto 2013, 21:18:30 CEST »
0
Secondo me ti conviene fare l'inizializzazione del TTS appena apri la tua app.
Eventualmente ti tieni da parte un riferimento statico ad un oggetto TextToSpeech e quando il tuo Dialog compare invochi il metodo speak()
Per esperienza ho notato che inizialmente il TTS ci mette un po' e inoltre se hai più TTS engines su un dispositivo potrebbe aprirti un Intent per farti scegliere quale usare... meglio che lo prepari prima.
Le mie apps su Google Play Store: