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