package com.tevinjeffrey.rutgersct.services;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.SystemClock;
import com.tevinjeffrey.rutgersct.utils.PreferenceUtils;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import timber.log.Timber;
public class Alarm {
private final Context mContext;
private PreferenceUtils mPreferenceUtils;
@Inject
public Alarm(PreferenceUtils preferenceUtils, Context context) {
this.mPreferenceUtils = preferenceUtils;
this.mContext = context;
}
public void setAlarm() {
AlarmManager alarmMgr = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
Intent service = new Intent(mContext, RequestService.class);
//Package that intent into a pending intent.
PendingIntent alarmIntent = PendingIntent.getService(mContext, 1234, service,
PendingIntent.FLAG_UPDATE_CURRENT);
//Cancel all previous alarms of the same pending intent.
alarmMgr.cancel(alarmIntent);
//Set the alarm to the alarm manager.
alarmMgr.setInexactRepeating(
//Time since the device booted.
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime(),
getInterval(),
alarmIntent);
Timber.d("Alarm set: " + getInterval());
}
private long getInterval() {
int index = mPreferenceUtils.getSyncInterval();
if (index == 0) {
return TimeUnit.MINUTES.toMillis(5);
} else if (index == 1) {
return TimeUnit.MINUTES.toMillis(15);
} else if (index == 2) {
return TimeUnit.HOURS.toMillis(1);
} else if (index == 3) {
return TimeUnit.HOURS.toMillis(3);
} else {
return TimeUnit.HOURS.toMillis(6);
}
}
}