package com.solderbyte.openfit; import java.util.Calendar; import java.util.Date; import com.solderbyte.openfit.util.OpenFitIntent; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.util.Log; public class Cronjob { private static final String LOG_TAG = "OpenFit:Cronjob"; private static AlarmManager alarmManager = null; private static Intent alarmIntent = null; private static PendingIntent alarmPendingIntent = null; private static boolean isAlarm = false; public static void init(Context context) { Log.d(LOG_TAG, "Initializing Cronjob"); alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); alarmIntent = new Intent(OpenFitIntent.INTENT_SERVICE_CRONJOB); alarmPendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); } public static void start() { if(alarmPendingIntent != null && isAlarm == false) { Log.d(LOG_TAG, "Starting Cronjob"); Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)+1); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); Date cronDate = new Date(cal.getTimeInMillis()); Log.d(LOG_TAG, "Cronjob schedule to start at: " + cronDate); alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_HOUR, alarmPendingIntent); isAlarm = true; //alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, 1, 1, alarmPendingIntent); } } public static void stop() { if(alarmManager!= null) { Log.d(LOG_TAG, "Stopping Cronjob"); alarmManager.cancel(alarmPendingIntent); isAlarm = false; } } }