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