Something went wrong on our end
-
Peter Joseph De Jonckheere CESM2014 authored
Bug fixes for dnd and possibly saving and uploading this needs to be tested, according to user trial response.
Peter Joseph De Jonckheere CESM2014 authoredBug fixes for dnd and possibly saving and uploading this needs to be tested, according to user trial response.
SedentaryStimulus.java 3.64 KiB
package com.notificationFramework.stimulus;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import com.notificationFramework.sedentary.frontEnd.R;
import com.notificationFramework.stimulusStrategy.StimulusStrategy;
import java.util.Calendar;
/**
* Created by Peter De Jonckheere on 09/01/2018.
*/
public class SedentaryStimulus extends BroadcastReceiver implements Stimulus {
private static StimulusStrategy strategy;
public SedentaryStimulus(){
}
public SedentaryStimulus(Context context){
chooseStrategy(null, context);
}
public SedentaryStimulus(Context context, StimulusStrategy s){
chooseStrategy(s, context);
}
private void chooseStrategy(StimulusStrategy s, Context context) {
if(s != null){
strategy = s;
} else{
strategy = defaultStrategy;
}
Intent intent = new Intent(context, strategy.getClass());
context.startService(intent);
}
@Override
public void onReceive(Context context, Intent intent) {
SharedPreferences shared = context.getSharedPreferences(context.getString(R.string.preference_file_key), Context.MODE_PRIVATE);
if((shared.getBoolean(context.getString(R.string.notf_switch), true)) && (checkTime(shared, context))) {
Intent i = new Intent(context.getApplicationContext(), com.notificationFramework.notification.SedentaryNotification.class);
context.getApplicationContext().startService(i);
}
if(strategy == null){
strategy = defaultStrategy;
}
Intent intent1 = new Intent(context, strategy.getClass());
context.stopService(intent1);
chooseStrategy(strategy, context.getApplicationContext());
}
private boolean checkTime(SharedPreferences shared, Context context){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, shared.getInt(context.getString(R.string.dnd_shour), 23));
cal.set(Calendar.MINUTE, shared.getInt(context.getString(R.string.dnd_smin), 0));
Calendar cal2 = Calendar.getInstance();
int days = checkMonth(cal2.get(Calendar.MONTH));
if(shared.getInt(context.getString(R.string.dnd_shour), 23) > shared.getInt(context.getString(R.string.dnd_ehour), 9)) {
cal2.set(Calendar.DATE, ((cal2.get(Calendar.DATE) + 1) % days));
}
cal2.set(Calendar.HOUR_OF_DAY, shared.getInt(context.getString(R.string.dnd_ehour), 9));
cal2.set(Calendar.MINUTE, shared.getInt(context.getString(R.string.dnd_emin), 0));
Calendar curCal = Calendar.getInstance();
if(curCal.getTime().after(cal.getTime()) && curCal.getTime().before(cal2.getTime())){
return false;
} else {
return true;
}
}
private int checkMonth(int month){
switch (month){
case Calendar.JANUARY:
case Calendar.MARCH:
case Calendar.MAY:
case Calendar.JULY:
case Calendar.AUGUST:
case Calendar.OCTOBER:
case Calendar.DECEMBER:
return 31;
case Calendar.APRIL:
case Calendar.JUNE:
case Calendar.SEPTEMBER:
case Calendar.NOVEMBER:
return 30;
case Calendar.FEBRUARY:
Calendar cal = Calendar.getInstance();
if (cal.getActualMaximum(Calendar.DAY_OF_YEAR) > 365){
return 29;
} else {
return 28;
}
}
return -1;
}
}