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