JavascriptProva

mercoledì 27 luglio 2016

Bindaggio dell'Activity Impostazioni con il TimerService per l'interruzione dell'AlarmManager quando vengono regolate le impostazioni degli intervalli

Voglio che la regolazione delle SeekBar blocchi l'AlarmManager se è in funzione.
Per far questo devo bindare l'attività TimeSettings al TimerService.

public class TimeSettings extends Activity {

 SeekBar seekBarMin, seekBarMax;
 TextView textViewMin,textViewMax;
 SharedPreferences SP;
 
 TimerService mService;
 boolean mBound;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_time_settings);
  
  SP=getApplicationContext().getSharedPreferences("settings", Context.MODE_PRIVATE);
  seekBarMin=(SeekBar)findViewById(R.id.seekBar1);
  seekBarMin.setMax(240);
  
  
  seekBarMax=(SeekBar)findViewById(R.id.seekBar2);
  seekBarMax.setMax(240);
  
  int intervalloMin=SP.getInt("intervalloMin", 0);
  int intervalloMax=SP.getInt("intervalloMax", 0);
  
  seekBarMin.setProgress(intervalloMin);
  seekBarMax.setProgress(intervalloMax);
  
  textViewMin=(TextView)findViewById(R.id.textView1);
  setTextViewFromSeekBar(intervalloMin,textViewMin);
  textViewMax=(TextView)findViewById(R.id.textView2);
  setTextViewFromSeekBar(intervalloMax,textViewMax);
  
  seekBarMin.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
   
   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    SharedPreferences.Editor editor=SP.edit();
    editor.putInt("intervalloMin", seekBar.getProgress());
    editor.commit();
    
   }
   
   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
    mService.StopTime();
    
   }
   
   @Override
   public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    setTextViewFromSeekBar(progress,textViewMin);
    if(progress>seekBarMax.getProgress())seekBarMax.setProgress(progress);
   }
  });
  
  
  seekBarMax.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
   
   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    SharedPreferences.Editor editor=SP.edit();
    editor.putInt("intervalloMax", seekBar.getProgress());
    editor.commit();
    
   }
   
   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
    mService.StopTime();
    
   }
   
   @Override
   public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    setTextViewFromSeekBar(progress,textViewMax);
    if(progress<seekBarMin.getProgress())seekBarMin.setProgress(progress);
   }
  });
 }
 
 private void setTextViewFromSeekBar(int numero,TextView textView){
  TextView t=textView;
  int intero=10*(numero/10);
  int ore=intero/60;
  int minuti=intero%60;
  
  String stringaDelleOre;
  String stringaDeiMinuti;
  String stringaEt="";
  
  if(ore==0){
   stringaDelleOre="";
  }
  else if(ore==1){
   stringaDelleOre=ore+" ORA "; 
  }
  else{
   stringaDelleOre=ore+" ORE ";     
  }    
  if(minuti==0){
   stringaDeiMinuti="";     
  }
  else if(minuti==1){
   stringaDeiMinuti=minuti+" MINUTO ";          
  }
  else{
   stringaDeiMinuti=minuti+" MINUTI ";
  }    
  if(ore!=0 && minuti!=0) stringaEt=" E ";
  if(ore==0 && minuti==0) {
   stringaDelleOre=ore+" ORE";
   stringaEt= " E ";
   stringaDeiMinuti=minuti+" MINUTI";
  }

  t.setText(stringaDelleOre+stringaEt+stringaDeiMinuti);
 }
 
 @Override
 public void onStart(){
  super.onStart();
  Intent intent=new Intent(this,TimerService.class);
  bindService(intent,mConnection,Service.BIND_AUTO_CREATE);
 }
 
 @Override
 public void onStop(){
  super.onStop();
  if(mBound==true){
   unbindService(mConnection);
   mBound=false;
  }
 }
 
 ServiceConnection mConnection=new ServiceConnection(){

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

  @Override
  public void onServiceDisconnected(ComponentName name) {
   mBound=false;
   
  }
  
 };


}
Proviamolo...

Funziona! Riuscito al primo colpo!

Nessun commento:

Posta un commento