public override void OnReceive(Context context, Intent intent) { string selectedAction = intent.Action; var notificationId = intent.GetIntExtra(Consts.NotificationIdKey, 0); var message = intent.GetStringExtra(Consts.MessageKey); var title = intent.GetStringExtra(Consts.TitleKey); int alarmRunCounter = intent.GetIntExtra(Consts.AlarmCounterKey, 0); Log.Debug("Alarm", "AlarmNotificationReceiver Started : " + notificationId.ToString()); NotificationOptions options = JsonConvert.DeserializeObject <NotificationOptions>(intent.GetStringExtra(Consts.OptionsKey)); if (!string.IsNullOrEmpty(selectedAction)) { if (selectedAction == "Snooze" || selectedAction == "Ertele") { var alarmer = new AlarmerImplementation(); alarmer.AlarmCounter = alarmRunCounter - 1; Log.Debug("Alarm", "AlarmNotificationReceiver alarmRunCounter : " + alarmer.AlarmCounter.ToString()); DateTime date = DateTime.Now.AddMinutes(15); alarmer.Schedule(notificationId, title, message, date, new AlarmOptions { AlarmSequence = Shared.Enums.AlarmSequence.OneTime }, options); } Alarmer.Current.ReceiveSelectedNotification(string.Empty, string.Empty, notificationId, selectedAction); } }
public override void OnReceive(Context context, Intent intent) { Log.Debug("Alarm", "AlarmNotificationReceiver Started : " + DateTime.Now.ToString()); var alarmer = new AlarmerImplementation(); if (intent.Action != null && intent.Action == Intent.ActionBootCompleted) { Log.Debug("Alarm", "AlarmNotificationReceiver Reboot Started : " + DateTime.Now.ToString()); StartAfterReboot(alarmer); } else { try { var notificationId = intent.GetIntExtra(Consts.NotificationIdKey, 0); var message = intent.GetStringExtra(Consts.MessageKey); var title = intent.GetStringExtra(Consts.TitleKey); int alarmRunCounter = intent.GetIntExtra(Consts.AlarmCounterKey, 0); Log.Debug("Alarm", "AlarmNotificationReceiver Started : " + notificationId.ToString()); NotificationOptions options = JsonConvert.DeserializeObject <NotificationOptions>(intent.GetStringExtra(Consts.OptionsKey)); AlarmOptions alarmOptions = JsonConvert.DeserializeObject <AlarmOptions>(intent.GetStringExtra(Consts.AlarmOptionsKey)); DateTime dateTime = JsonConvert.DeserializeObject <DateTime>(intent.GetStringExtra(Consts.StartDateKey)); if (alarmOptions?.AlarmSequence != Shared.Enums.AlarmSequence.OneTime) { Log.Debug("Alarm", "AlarmNotificationReceiver alarmRunCounter : " + alarmRunCounter.ToString()); alarmer.AlarmCounter = alarmRunCounter; Log.Debug("Alarm", "AlarmNotificationReceiver alarmRunCounter : " + alarmer.AlarmCounter.ToString()); alarmer.Schedule(notificationId, title, message, dateTime, alarmOptions, options); } Log.Debug("Alarm", "AlarmNotificationReceiver Started : " + options.ToString()); alarmer.Notify(title, message, notificationId, options); Log.Debug("Alarm", "AlarmNotificationReceiver finished : " + DateTime.Now.ToString()); } catch (Exception ex) { var messages = new List <string>(); do { messages.Add(ex.Message); ex = ex.InnerException; }while (ex != null); var message = string.Join(" - ", messages); Console.WriteLine("AlarmNotificationReceiver : " + message); Log.Error("Alarm", "AlarmNotificationReceiver : " + ex.Message); } } }
private async Task StartAfterReboot(AlarmerImplementation alarmer) { AlarmRepository _alarmRepo = new AlarmRepository(); TimingRepository _timingRepository = new TimingRepository(); CustomActionRepository _customActionRepository = new CustomActionRepository(); try { var alarmList = await _alarmRepo.GetListAsync(); if (alarmList != null && alarmList.Count > 0) { foreach (var alarm in alarmList) { var timings = await _timingRepository.QueryAsync().Where(w => w.AlarmId == alarm.Id).ToArrayAsync(); var customs = await _customActionRepository.QueryAsync().Where(w => w.AlarmId == alarm.Id).ToArrayAsync(); var alarmOption = new AlarmOptions { EndDate = alarm.EndDate, AdditionalTimes = timings.Select(s => s.Time).ToArray(), AlarmSequence = alarm.AlarmSequence, DaysOfWeek = alarm.DaysOfWeek, Interval = alarm.Interval, TotalAlarmCount = alarm.TotalAlarmCount }; var notification = new NotificationOptions { EnableSound = alarm.EnableSound, EnableVibration = alarm.EnableVibration, LargeIcon = alarm.LargeIcon, SmallIcon = alarm.SmallIcon, CustomActions = customs.Select(s => { return(new CustomAction { Icon = s.Icon, Name = s.Name }); }).ToArray() }; alarmer.Schedule(alarm.Id, alarm.Title, alarm.Message, alarm.StartDate, alarmOption, notification, isNew: false); } } } catch (Exception) { } }