JavascriptProva

sabato 30 luglio 2016

Voce sintetica dal ricevitore del cellulare anziché dall'altoparlante.

L'idea successiva è stata quella di mantenere sì la voce, ma di inviarla come una normale telefonata, tramite l'altoparlante del ricevitore telefonico, in modo che possa essere sentita da tutti. Simulare una vera e propria telefonata!
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.
Creo una Palestra dedicata.
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