Пример #1
0
        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);
                }
            }
        }