Preferences.java :  » App » linuxtag » ch » racic » android » linuxtag » Android Open Source

Android Open Source » App » linuxtag 
linuxtag » ch » racic » android » linuxtag » Preferences.java
package ch.racic.android.linuxtag;

import java.util.Date;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.util.Log;

public class Preferences extends PreferenceActivity implements
    OnSharedPreferenceChangeListener {
  private SharedPreferences mPrefs;

  public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
            addPreferencesFromResource(R.xml.preferences);
            PreferenceScreen preferenceScreen = getPreferenceScreen();
            preferenceScreen.getSharedPreferences()
                            .registerOnSharedPreferenceChangeListener(this);
    }

  @Override
  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
      String key) {
     // what to do if some values changed?
    //TODO implement the hooks with autostart and agenda reminders
    if (key.equals("refreshrate")) {
      int updateIntervall = Integer.parseInt(sharedPreferences.getString("refreshrate", ""+0));
      if(updateIntervall != 0) {
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, UpdateShedule.class);
        //Time that the alarm should trigger
        Date triggerAt = new Date();
        if(triggerAt.getHours() < 6) {
          //It is before 6 in the morning
          // Schedule next update to 6
          triggerAt.setHours(6);
        } else if(triggerAt.getHours() > 19) {
          //It is after 7 in the evening
          // Schedule next update to 6 on next morning
          triggerAt.setDate(triggerAt.getDate()+1); //TODO works in this case but wont work if actual day is last of the month
          triggerAt.setHours(6);
        } else {
          triggerAt.setHours(triggerAt.getHours()+updateIntervall);
        }
        PendingIntent pendingIntent =  PendingIntent.getService(
                            this, 
                            0, 
                            intent, 
                            android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
        Log.i("LinuxTagPreferenceChanges", "Setting next update at "+ new java.text.SimpleDateFormat("HH:mm").format(triggerAt));
        am.set(AlarmManager.RTC_WAKEUP, triggerAt.getTime(), pendingIntent);
      
      }
      
      } else if(key.equals("notifyNextSchedule") || key.equals("notifyNextScheduleMinutesBefore")) {
        final Context ctx = this.getApplicationContext();
        new Thread() {
          @Override public void run() {
          ctx.startService(new Intent(ctx, AlarmService.class));
          }
        }.start();
      }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.