package de.htwdd;
import android.app.AlarmManager;
import android.app.IntentService;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import java.util.Calendar;
import de.htwdd.classes.LessonSearch;
public class VolumeControllerService extends IntentService {
static final String EXTRA_TIME = "de.htwdd.EXTRA_TIME";
static final String PREFERENCE_FILE_VOLUME_CTRL = "de.htwdd.PREFERENCE_FILE_VOLUME_CTRL";
static final String PREFERENCE_MODE = "de.htwdd.MODE";
static final int PREFERENCE_MODE_DEFAULT_NORMAL = 0;
static final int PREFERENCE_MODE_CHANGED_SILENT = 1;
public VolumeControllerService() {
super("volumeControllerService");
}
@Override
protected void onHandleIntent(Intent intent) {
VolumeController volumeController = new VolumeController(getApplicationContext());
if (intent.getStringExtra("Mode").equals("turnSoundOff"))
volumeController.turnSoundOff();
else if (intent.getStringExtra("Mode").equals("turnSoundOn"))
volumeController.turnSoundOn();
}
public void StartMultiAlarmVolumeController(Context context) {
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(ALARM_SERVICE);
// Loop counter `i` is used as a `requestCode`
for (int i = 0; i < LessonSearch.lessonStartTimes.length; i++) {
//SETTING THE TURNOFF ALARMS UP
Calendar calendar = VolumeControllerService.setCalendar(LessonSearch.lessonStartTimes[i]);
Intent intent = getIntentSoundSwitch(context, "turnSoundOff", calendar);
PendingIntent pendingIntent = PendingIntent.getService(context, i, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
}
public void cancelMultiAlarmVolumeController(Context context) {
AlarmManager alarmMgr = (AlarmManager) context.getSystemService(ALARM_SERVICE);
for (int i = 0; i < LessonSearch.lessonStartTimes.length; i++) {
Calendar calendar = VolumeControllerService.setCalendar(LessonSearch.lessonStartTimes[i]);
Intent intent = getIntentSoundSwitch(context, "turnSoundOff", calendar);
PendingIntent pendingIntent = PendingIntent.getService(context, i, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.cancel(pendingIntent);
pendingIntent.cancel();
}
for (int i = LessonSearch.lessonStartTimes.length, l = 0; i < LessonSearch.lessonEndTimes.length + LessonSearch.lessonStartTimes.length; i++, l++) {
Calendar calendar = VolumeControllerService.setCalendar(LessonSearch.lessonEndTimes[l]);
Intent intent = getIntentSoundSwitch(context, "turnSoundOn", calendar);
PendingIntent pendingIntent = PendingIntent.getService(context, i, intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmMgr.cancel(pendingIntent);
pendingIntent.cancel();
}
}
@NonNull
public static Intent getIntentSoundSwitch(Context context, String turnOnOff, Calendar calendar) {
Intent intent = new Intent(context, VolumeControllerService.class);
intent.putExtra("Mode", turnOnOff);
String currentTime = "Hour: " + calendar.get(Calendar.HOUR_OF_DAY) + " min: " + calendar.get(Calendar.MINUTE);
intent.putExtra(VolumeControllerService.EXTRA_TIME, currentTime);
return intent;
}
static protected Calendar setCalendar(int timeInMinutes) {
//Set Calender at time specified by timeInMinutes
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timeInMinutes / 60);
calendar.set(Calendar.MINUTE, timeInMinutes % 60);
calendar.set(Calendar.SECOND, 0);
return calendar;
}
public void resetSettingsFile(Context context) {
VolumeController volumeController = new VolumeController(context);
//control bit set to default value (FROM 1:SILENT MODE TO -> 0: NORMAL MODE).
volumeController.setVolumeChangedStatus(VolumeControllerService.PREFERENCE_MODE_DEFAULT_NORMAL);
}
public static class HtwddBootReceiver extends BroadcastReceiver {
public HtwddBootReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
VolumeControllerService volumeControllerService = new VolumeControllerService();
volumeControllerService.StartMultiAlarmVolumeController(context);
}
}
}
}