package com.eveningoutpost.dexdrip;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.util.Log;
import com.eveningoutpost.dexdrip.ImportedLibraries.dexcom.ReadDataShare;
import com.eveningoutpost.dexdrip.Models.BgReading;
import com.eveningoutpost.dexdrip.Services.DexShareCollectionService;
import com.eveningoutpost.dexdrip.UtilityModels.CollectionServiceStarter;
import com.eveningoutpost.dexdrip.UtilityModels.Intents;
import java.util.Calendar;
import java.util.Date;
public class widgetUpdateService extends Service {
public String TAG = "widgetUpdateService";
BroadcastReceiver _broadcastReceiver;
public widgetUpdateService() {}
@Override
public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); }
@Override
public void onCreate() {
super.onCreate();
setFailoverTimer();
_broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context ctx, Intent intent) {
if (intent.getAction().compareTo(Intent.ACTION_TIME_TICK) == 0) {
updateCurrentBgInfo();
}
}
};
registerReceiver(_broadcastReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
setFailoverTimer();
updateCurrentBgInfo();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
if (_broadcastReceiver != null) {
unregisterReceiver(_broadcastReceiver);
}
}
public void setFailoverTimer() { //Keep it alive!
if(AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), xDripWidget.class)).length > 0) {
long retry_in = (1000 * 60 * 5);
Log.d(TAG, "Fallover Restarting in: " + (retry_in / (60 * 1000)) + " minutes");
Calendar calendar = Calendar.getInstance();
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
alarm.set(alarm.RTC_WAKEUP, calendar.getTimeInMillis() + retry_in, PendingIntent.getService(this, 0, new Intent(this, widgetUpdateService.class), 0));
}
}
public void updateCurrentBgInfo() {
Log.d(TAG, "Sending update flag to widget");
int ids[] = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), xDripWidget.class));
Log.d(TAG, "Updating " + ids.length + " widgets");
Intent intent = new Intent(this,xDripWidget.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
sendBroadcast(intent);
}
}