package org.adaptlab.chpir.android.activerecordcloudsync;
import java.util.Date;
import android.app.AlarmManager;
import android.app.IntentService;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.preference.PreferenceManager;
public class PollService extends IntentService {
private static final String TAG = "PollService";
private static int DEFAULT_POLL_INTERVAL = 1000 * 120;
public static final String PREF_IS_ALARM_ON = "isAlarmOn";
private static int sPollInterval;
private static Date lastUpdate;
public PollService() {
super(TAG);
sPollInterval = DEFAULT_POLL_INTERVAL;
}
@Override
protected void onHandleIntent(Intent intent) {
if (NetworkNotificationUtils.checkForNetworkErrors(getApplicationContext())) {
lastUpdate = new Date();
ActiveRecordCloudSync.syncSendTables(getApplicationContext());
}
}
// Control polling of api, set isOn to true to enable polling
public static void setServiceAlarm(Context context, boolean isOn) {
Intent i = new Intent(context, PollService.class);
PendingIntent pi = PendingIntent.getService(context, 0, i, 0);
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
if (isOn) {
alarmManager.setRepeating(AlarmManager.RTC,
System.currentTimeMillis(), sPollInterval, pi);
} else {
alarmManager.cancel(pi);
pi.cancel();
}
PreferenceManager.getDefaultSharedPreferences(context)
.edit()
.putBoolean(PollService.PREF_IS_ALARM_ON, isOn)
.commit();
}
public static boolean isServiceAlarmOn(Context context) {
Intent i = new Intent(context, PollService.class);
PendingIntent pi = PendingIntent.getService(context, 0, i,
PendingIntent.FLAG_NO_CREATE);
return pi != null;
}
public static void setPollInterval(int interval) {
sPollInterval = interval;
}
public static void restartServiceAlarm(Context context) {
setServiceAlarm(context, false);
setServiceAlarm(context, true);
}
public static Date getLastUpdate() {
return lastUpdate;
}
}