JavascriptProva

lunedì 1 agosto 2016

Regolazione di AlarmOn.

A ogni cambiamento in TimerService viene attivato il cambiamento dello status di AlarmOn.
 public void StartTime(){
  
  Log.d("STARTTIME", "STARTTIME");
  Runnable runnable=new Runnable(){

   @Override
   public void run() {
    Intent intent=new Intent(getApplicationContext(),Form.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent); 
   }
  };
  Global.handler.postDelayed(runnable, 5000);
  SharedPreferences.Editor editor=SP.edit();
  editor.putBoolean("alarmon", true);
  editor.commit();
  if(onAlarmChangeListener!=null)onAlarmChangeListener.AlarmChange();
In blu ho marcato il cambiamento del setting "alarmon" a "true" quando viene inizializzato l'alarm.
In rosso, invece, l'attivazione dell'evento AlarmChange.

In MainActivity, non appena si ha il binding del TimerService bisogna desumere lo stato di AlarmOn del TimerService stesso.
Viene impostato il listener su TimerService e si dà corpo all'evento AlarmChange.
 ServiceConnection mConnection=new ServiceConnection(){

  @Override
  public void onServiceConnected(ComponentName name, IBinder service) {
   LocalBinder bnd=(LocalBinder)service;
   mService=bnd.getService();
   mBound=true;
   mService.setOnAlarmChangeListener(new OnAlarmChangeListener(){

    @Override
    public void AlarmChange() {
     if(SP.getBoolean("alarmon", true)){
      semaforo.setBackgroundResource(R.drawable.tondinoverde);
      bttStart.setEnabled(false);
      bttStop.setEnabled(true);
     }else{
      semaforo.setBackgroundResource(R.drawable.tondinorosso);
      bttStart.setEnabled(true);
      bttStop.setEnabled(false);
     }
     
    }
    
   });
Al binding, ossia alla riapertura di MainActivity, si entra in ascolto di AlarmChange.
Ora, in TimerService, AlarmChange() entra in azione anche quando viene impostato il listener:
 public void setOnAlarmChangeListener(OnAlarmChangeListener listener){
  onAlarmChangeListener=listener;
  onAlarmChangeListener.AlarmChange();
 }
Qui è inutile porre la condizione "se onAlarmChangeListener esiste", in quanto questa è proprio la funzione che lo imposta. Dovrebbe funzionare...

Nessun commento:

Posta un commento