using Android.App; using Android.Content; using Android.OS; using GMCabsDriverAssistant.Services; using GMCabsDriverAssistantSolution.Platforms.Android; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; [assembly: Dependency(typeof(AndroidAlarmReceiver))] namespace GMCabsDriverAssistantSolution.Platforms.Android { [BroadcastReceiver(Name = "au.com.gmcabs.driverassistant.app.AndroidAlarmReceiver", Enabled = true, Exported = true, DirectBootAware = true)] public class AndroidAlarmReceiver : BroadcastReceiver, IAlarmService { [Obsolete] public override void OnReceive(Context context, Intent intent) { string foregroundChannelId = "GMCabsForeGroundServiceRunningChannel"; var message = "Foreground Service Is On"; var title = "Service Status"; var resultIntent = new Intent(context, typeof(MainActivity)); resultIntent.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask); var pendingIntentFlags = (Build.VERSION.SdkInt >= BuildVersionCodes.S) ? PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Mutable : PendingIntentFlags.UpdateCurrent; var pending = PendingIntent.GetActivity(context, 0, resultIntent, pendingIntentFlags); var builder = new Notification.Builder(context) .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification) //.SetColor(global::Android.App.Application.Context.GetColor(Resource.Color.color_notification_icon)) .SetContentTitle(title) .SetContentText(message) .SetPriority((int)NotificationImportance.Max) .SetAutoCancel(true) .SetTimeoutAfter(60000); builder.SetContentIntent(pending); var notification = builder.Build(); var notifManager = global::Android.App.Application.Context.GetSystemService(global::Android.Content.Context.NotificationService) as NotificationManager; if (global::Android.OS.Build.VERSION.SdkInt >= global::Android.OS.BuildVersionCodes.O) { var notificationChannel = new NotificationChannel(foregroundChannelId, "GMCabsAlarmManagerNotification", NotificationImportance.Low); notificationChannel.Importance = NotificationImportance.Low; notificationChannel.EnableLights(true); notificationChannel.EnableVibration(true); notificationChannel.SetShowBadge(true); notificationChannel.SetVibrationPattern(new long[] { 100, 200, 300 }); if (builder != null) { builder.SetChannelId(foregroundChannelId); notifManager.CreateNotificationChannel(notificationChannel); } } notifManager.Notify(DateTime.Now.Millisecond, notification); } public void StartMyAlarmService() { var alarmIntent = new Intent(global::Android.App.Application.Context, typeof(AndroidAlarmReceiver)); var pendingIntentFlags = (Build.VERSION.SdkInt >= BuildVersionCodes.S) ? PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Mutable : PendingIntentFlags.UpdateCurrent; var pending = PendingIntent.GetBroadcast(global::Android.App.Application.Context, 0, alarmIntent, pendingIntentFlags); var alarmManager = (AlarmManager)global::Android.App.Application.Context.GetSystemService(Context.AlarmService); alarmManager.Set(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime() + 1 * 1000, pending); } } }