In un paio di giorni al massimo voglio riuscirci.
La sequenza è questa:
- squilla il telefono
- l'utente ha facoltà di vedere se la chiamata sia una chiamata reale o una chiamata simulata dalla mia applicazione.
- se l'utente non risponde, entro un tempo settabile la chiamata cessa.
- l'utente può, con la pressione di un tasto, rifiutare la chiamata
- l'utente risponde tramite la pressione di un tasto
- l'utente sente il messaggio vocale e si comporta di conseguenza.
Ecco il codice:
public class MainActivity extends Activity {
Button button;
TextToSpeech tts;
AudioManager audioManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts=new TextToSpeech(getApplicationContext(),new TextToSpeech.OnInitListener(){
@Override
public void onInit(int status) {
if(status==TextToSpeech.SUCCESS){
tts.setLanguage(Locale.ITALIAN);
}
}
});
button=(Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
audioManager=(AudioManager)getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setSpeakerphoneOn(false);
tts.speak("Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura", TextToSpeech.QUEUE_FLUSH, null);
}
});
}
@Override
public void onDestroy(){
super.onDestroy();
audioManager.setSpeakerphoneOn(true);
audioManager.setMode(AudioManager.MODE_NORMAL);
}
}
Alla fine ho messo una specie di "riparazione", che non so fino a che punto sia efficace, devo sperimentarla.Ecco, sperimentazione:
@Override
public void onDestroy(){
super.onDestroy();
audioManager.setSpeakerphoneOn(true);
audioManager.setMode(AudioManager.MODE_NORMAL);
tts.speak("Fine del messaggio", TextToSpeech.QUEUE_FLUSH, null);
}
Funziona, funziona...
Nessun commento:
Posta un commento