JavascriptProva

sabato 30 luglio 2016

Inizio dei lavori con il TextToSpeech. Creazione della variabile statica pubblica tts per evitare la latenza di inizializzazione del TextToSpeech.

Impostiamo il TextToSpeech.
Creo una classe chiamata Global, al solo scopo di dichiararvi una variabile pubblica e statica:
import android.speech.tts.TextToSpeech;

public class Global {

 public static TextToSpeech tts;
}
...che sarà inizializzata nella prima Activity ad essere aperta, ossia in MainActivity.
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  Log.d("MAIN", "ONCREATE");
  
  Global.tts=new TextToSpeech(getApplicationContext(),new TextToSpeech.OnInitListener() {
   
   @Override
   public void onInit(int status) {
    if(status==TextToSpeech.SUCCESS){
     Global.tts.setLanguage(Locale.ITALIAN);
    }
    
   }
  });
Bene.
Ora faccio in modo che parli all'apertura di Form, dicendo una cazzata qualunque.
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_form);
  
  Global.tts.speak("Ciao, Stronzo", TextToSpeech.QUEUE_FLUSH, null);
zittendo provvisoriamente il play della suoneria:
  ringtone=RingtoneManager.getRingtone(getApplicationContext(), ringtoneUri);
  //ringtone.play();
E funziona.
In particolare, è notevole il fatto che la voce inizi immediatamente al comparire dell'Activity, segno che il mio workaround per evitare la latenza dovuta all'inizializzazione del TextToSpeech è stata azzeccatissima!

Nessun commento:

Posta un commento