Exemple #1
0
        public int ScheduleNotification(int id)
        {
            if (!channelInitialized)
            {
                CreateNotificationChannel();
            }

            Intent intent = new Intent(context, typeof(MainActivity));

            var sqliteController = new AndroidSQLite();
            var dbPath           = sqliteController.GetPlatformDBPath("translations.db3");
            var connection       = sqliteController.GetConnection(dbPath);

            var alarmStorage = new AlarmStorage(context);
            var alarm        = alarmStorage.GetAlarmById(id);

            string difficulty;

            if (alarm == null || alarm.Difficulty == null)
            {
                difficulty = "Advanced";
            }
            else
            {
                difficulty = alarm.Difficulty;
            }

            Android.Util.Log.Verbose("notifyFilter", $"SCHEDULED DIFF TRIGGERED {difficulty}"); // adb logcat -s notifyFilter

            var randomTranslation = connection.Query <ItemTranslation>($"SELECT * FROM ItemTranslation WHERE Difficulty = '{difficulty}' ORDER BY RANDOM() LIMIT 1").First();

            PendingIntent pendingIntent = PendingIntent.GetActivity(context, id, intent, PendingIntentFlags.OneShot);

            var notification = AndroidNotificationManager.BuildNotification(context, pendingIntent, randomTranslation.German, randomTranslation.English);

            StartForeground(id, notification);

            ReceiveNotification(randomTranslation);

            var util = new AlarmUtil(context);

            if (alarm != null)
            {
                util.ScheduleAlarm(alarm);
                Android.Util.Log.Verbose("notifyFilter", $"Rescheduled {alarm.Id}"); // adb logcat -s notifyFilter
            }

            StopForeground(false);

            return(id);
        }
Exemple #2
0
        public void ReceiveNotification(ItemTranslation itemTranslation)
        {
            var args = new NotificationEventArgs()
            {
                Title   = itemTranslation.German,
                Message = itemTranslation.English,
            };

            NotificationReceived?.Invoke(null, args);
            // Save result to history db
            itemTranslation.id = null;
            var sqliteController = new AndroidSQLite();
            var dbPath           = sqliteController.GetPlatformDBPath("history.db3");
            var connection       = sqliteController.GetConnection(dbPath);

            connection.CreateTable <ItemTranslation>();
            connection.Insert(itemTranslation);
        }