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); }
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); }