예제 #1
0
        public override void OnCreate()
        {
            base.OnCreate();

            // Register ScreenOn, ScreenOff intents
            RegisterReceiver(IntentBroadcastReceiver.Instance, new IntentFilter(Intent.ActionScreenOn));
            RegisterReceiver(IntentBroadcastReceiver.Instance, new IntentFilter(Intent.ActionScreenOff));

            PowerManager powerManager = GetSystemService(PowerService) as PowerManager;

            if (!powerManager.IsInteractive)
            {
                StopSelf();
                return;
            }

            // Create widget update intent
            Intent intent = new Intent();

            intent.SetAction(AppWidgetManager.ActionAppwidgetUpdate);
            PendingIntent pendingIntent = PendingIntent.GetBroadcast(this, 0, intent, 0);

            // Setup an alarm
            AlarmManager alarmManager = GetSystemService(AlarmService) as AlarmManager;

            alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime(), TramUrWayApplication.WidgetUpdateDelay * 1000, pendingIntent);
        }
예제 #2
0
        private void SetTime(Calendar alarmTrigger, Treatment treatment, PendingIntent pendingIntent, AlarmManager alarmManager, int position)
        {
            //set time
            AlarmPickerFragment frag = AlarmPickerFragment.NewInstance(
                delegate(DateTime time)
            {
                string[] timePicked = time.ToShortTimeString().Split(":");

                int hour    = int.Parse(timePicked[0]);
                int minutes = int.Parse(timePicked[1]);
                Console.WriteLine(timePicked);
                alarmTrigger.Set(Java.Util.Calendar.HourOfDay, hour);
                alarmTrigger.Set(Java.Util.Calendar.Minute, minutes);
                alarmTrigger.Set(Java.Util.Calendar.Second, 0);

                Console.WriteLine(alarmTrigger.Time.ToLocaleString());
                alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, alarmTrigger.TimeInMillis, AlarmManager.IntervalDay * (int)treatment.Frequency, pendingIntent);


                _treatments[position].AlarmTime = time.ToShortTimeString();
                UpdateAlarmTime(_treatments[position]);
                _treatmentsView.Adapter = new TreatmentAdapter(_treatments.ToArray(), this);
            });

            frag.Show(FragmentManager, AlarmPickerFragment.TAG);
        }
예제 #3
0
        public void LocalNotify(int idNotificacao, string title, string message, Int32 diaDaSemanaAlarme, Int32 horaAlarme, Int32 minutoAlarme, bool repetir)
        {
            var context = Android.App.Application.Context;

            Intent alarmIntent = new Intent(context, typeof(AlarmReceiver));

            alarmIntent.PutExtra("message", message);
            alarmIntent.PutExtra("title", title);
            alarmIntent.PutExtra("id", Convert.ToString(idNotificacao));

            PendingIntent pendingIntent = PendingIntent.GetBroadcast(context, idNotificacao, alarmIntent, PendingIntentFlags.UpdateCurrent);
            AlarmManager  alarmManager  = (AlarmManager)context.GetSystemService(Context.AlarmService);

            var hoje = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);

            var diaDaSemana = Convert.ToInt32(hoje.DayOfWeek);
            var horaAtual   = hoje.Hour;
            var minutoAtual = hoje.Minute;

            int diasAdicionar = 0;

            if (diaDaSemana == diaDaSemanaAlarme)
            {
                if (horaAtual > horaAlarme)
                {
                    diasAdicionar = 7;
                    diaDaSemana   = diaDaSemanaAlarme;
                }
                else if (horaAtual == horaAlarme && minutoAtual >= minutoAlarme)
                {
                    diasAdicionar = 7;
                    diaDaSemana   = diaDaSemanaAlarme;
                }
            }
            while (diaDaSemana != diaDaSemanaAlarme)
            {
                diasAdicionar++;
                diaDaSemana++;
                if (diaDaSemana == 7)
                {
                    diaDaSemana = 0;
                }
            }

            var tempoAlarme = new DateTime(DateTime.Now.AddDays(diasAdicionar).Year, DateTime.Now.AddDays(diasAdicionar).Month, DateTime.Now.AddDays(diasAdicionar).Day, horaAlarme, minutoAlarme, 0);

            var diferencaTempo = tempoAlarme - hoje;
            var tempoDisparo   = (long)diferencaTempo.TotalMilliseconds;

            if (repetir)
            {
                alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + tempoDisparo, AlarmManager.IntervalDay * 7, pendingIntent);
            }
            else
            {
                alarmManager.Set(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + tempoDisparo, pendingIntent);
            }
        }
예제 #4
0
        /// <summary>
        /// Broadcasts the productos pendientes.
        /// </summary>
        void BroadcastProductosPendientes()
        {
            Intent        i            = new Intent(this, typeof(NotificacionAlert));
            PendingIntent pi           = PendingIntent.GetBroadcast(this, 0, i, 0);
            AlarmManager  alarmManager = (AlarmManager)GetSystemService(AlarmService);

            alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtime, SystemClock.CurrentThreadTimeMillis(),
                                             30000, pi);
        }
예제 #5
0
        /// <summary>
        /// Broadcasts the productos pendientes.
        /// </summary>
        void BroadcastPendientesNoFinalizados()
        {
            Intent        i            = new Intent(this, typeof(CheckPendingProducts));
            PendingIntent pi           = PendingIntent.GetBroadcast(this, 0, i, 0);
            AlarmManager  alarmManager = (AlarmManager)GetSystemService(AlarmService);

            alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtime, SystemClock.CurrentThreadTimeMillis(),
                                             1000, pi);
        }
        public static void SetWakeUpAlarmRepeating(Context context, long firstFireAfterMIliseconds)
        {
            WakeUpAlarmReceiver.CancelWakeUpAlarmRepeating(context);
            AlarmManager am     = (AlarmManager)context.GetSystemService(Context.AlarmService);
            Intent       intent = new Intent(context, typeof(WakeUpAlarmReceiver));

            pendingIntent = PendingIntent.GetBroadcast(context, 0, intent, 0);
            am.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + firstFireAfterMIliseconds, AlarmManager.IntervalHour, pendingIntent);
        }
        public override void OnReceive(Context context, Intent intent)
        {
            if (intent.Action != null && intent.Action.Equals(Intent.ActionBootCompleted))
            {
                Logging.Log(this, Logging.LoggingTypeDebug, "OnReceive()");

                AlarmManager  alarmManager  = (AlarmManager)context.GetSystemService(Context.AlarmService);
                PendingIntent pendingIntent = PendingIntent.GetBroadcast(context, 0, new Intent(context, typeof(NewsAppAlarmService)), 0);
                alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + 60, AlarmManager.IntervalHalfDay, pendingIntent);
            }
        }
예제 #8
0
        public void Remind(string title, string message, DateTime dateTime, string type)
        {
            Intent alarmIntent = new Intent(Forms.Context, typeof(AlarmReceiver));

            alarmIntent.PutExtra("message", message);
            alarmIntent.PutExtra("title", title);

            PendingIntent pendingIntent = PendingIntent.GetBroadcast(Forms.Context, ++counter, alarmIntent, PendingIntentFlags.UpdateCurrent);
            AlarmManager  alarmManager  = (AlarmManager)Forms.Context.GetSystemService(Context.AlarmService);

            var millis     = Convert.ToInt64((DateTime.Now - DateTime.Today.Date).TotalMilliseconds);
            var sampleTime = ManilaTime; //ManilaDay.AddHours(16).AddMinutes(50);

            var triggerOpen  = Convert.ToInt64((MarketOpen - ManilaDay.Date).TotalMilliseconds);
            var triggerClose = Convert.ToInt64((MarketClose - ManilaDay).TotalMilliseconds);

            var intervalDay = AlarmManager.IntervalDay;

            Java.Util.Calendar calendar = Java.Util.Calendar.Instance;

            if (type == "Open")
            {
                calendar.Set(
                    Java.Util.CalendarField.HourOfDay, MarketOpen.Hour);
                calendar.Set(
                    Java.Util.CalendarField.Minute, MarketOpen.Minute);
                alarmManager.SetInexactRepeating(
                    AlarmType.RtcWakeup, calendar.TimeInMillis, intervalDay, pendingIntent);
            }
            else if (type == "Close")
            {
                calendar.Set(
                    Java.Util.CalendarField.HourOfDay, MarketClose.Hour);
                calendar.Set(
                    Java.Util.CalendarField.Minute, MarketClose.Minute);
                alarmManager.SetInexactRepeating(
                    AlarmType.RtcWakeup, calendar.TimeInMillis, intervalDay, pendingIntent);
            }
        }
예제 #9
0
        public void OnSharedPreferenceChanged(ISharedPreferences sharedPreferences, string key)
        {
            //Killswitch to decide if user wants to stop downloading images.
            //Stop All receivers, alarms, etc.
            if (key == ConfigurationParameters.EnableService)
            {
                if (sharedPreferences.GetBoolean(key, false) == true)
                {
                    #region Enable AlarmManager Ice Cream Sandwich.

                    if (Build.VERSION.SdkInt < BuildVersionCodes.KitkatWatch)
                    {
                        intent        = new Intent(Application.Context, typeof(AlarmReceiver));
                        pendingIntent = PendingIntent.GetBroadcast(Application.Context, 2, intent, PendingIntentFlags.UpdateCurrent);
                        //If the user enables the service, schedule the alarm or Scheduler to download data each day.
                        EnableBootReceiver();

                        //Kitkat or Less.
                        //>Schedule an alarm to run after 30 minutes after this call(second parameter), and once a day after that.(third parameter)
                        alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + AlarmManager.IntervalFifteenMinutes, AlarmManager.IntervalDay, pendingIntent);
                    }

                    #endregion Enable AlarmManager Ice Cream Sandwich.

                    #region Enable JobScheduler Lollipop and Beyond.

                    Scheduler.ScheduleJob(Application.Context);

                    #endregion Enable JobScheduler Lollipop and Beyond.
                }
                else if (sharedPreferences.GetBoolean(key, false) == false)
                {
                    #region Disable AlarmManager Ice Cream Sandwich

                    if (Build.VERSION.SdkInt < BuildVersionCodes.KitkatWatch)
                    {
                        alarmManager?.Cancel(pendingIntent);
                        DisableBootReceiver();
                    }

                    #endregion Disable AlarmManager Ice Cream Sandwich

                    #region Disable JobScheduler Lollipop and Beyond.

                    Scheduler.CancelSchedule(Application.Context);

                    #endregion Disable JobScheduler Lollipop and Beyond.
                }
            }
        }
        public void CreateTask(MainActivity mainActivity)
        {
            if (!IsAlarmCreated())
            {
                Intent alarmIntent = new Intent(mainActivity, typeof(AlarmReceiver));
                alarmIntent.PutExtra("title", "Налична е нова версия");
                alarmIntent.PutExtra("message", "Натиснете тук за сваляне на новата версия.");

                PendingIntent pending = PendingIntent.GetBroadcast(mainActivity, 0, alarmIntent, PendingIntentFlags.UpdateCurrent | PendingIntentFlags.Immutable);

                AlarmManager alarmManager = mainActivity.GetSystemService(Context.AlarmService).JavaCast <AlarmManager>();
                alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + CHECK_TIME, CHECK_TIME, pending);
            }
        }
예제 #11
0
        public void SetAlarm(Context pContext)
        {
            AlarmManager pManager = (AlarmManager)pContext.GetSystemService(Context.AlarmService);
            Intent       pIntent  = new Intent(pContext, typeof(NotificationAlarm));

            PendingIntent pPendingIntent = PendingIntent.GetBroadcast(pContext, 0, pIntent, 0);

            DateTime pCurrent = DateTime.Now;

            pCurrent.AddMinutes(1);

            long lInterval = 1000 * 60;             // minute
            long lMS       = this.GetMS(pCurrent);

            pManager.SetInexactRepeating(AlarmType.RtcWakeup, lMS, lInterval, pPendingIntent);
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource   = Resource.Layout.Toolbar;

            try
            {
                if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
                {
                    Xamarin.Essentials.Platform.Init(this, savedInstanceState);
                    RequestPermissions(Permission, requestID);
                }
            }
            catch { }

            // KẾT NỐI GIỮA TẦNG SPECIFIC VỚI PLC ĐỂ GỌI SPECIFIC Ở PLC
            ContactsAdapterManager.Current        = new ContactsAdapter(this, Application);
            ContactService_AndroidManager.Current = new ContactService_Android(this, Application);
            ToastManager.Current = new ToastDependency(this);
            base.OnCreate(savedInstanceState);
            Rg.Plugins.Popup.Popup.Init(this, savedInstanceState);
            global::Xamarin.Forms.Forms.Init(this, savedInstanceState);



            LoadApplication(new App());

            // LẤY PERMISSION KHI KHỞI ĐỘNG APPS

            long repeatEveryday = (60 * 1000) * 60 * 24; // => run at 2:00 AM every day

            Intent intentAlarm = new Intent(this, typeof(MyReceiver));

            // create the object
            AlarmManager alarmManager = (AlarmManager)GetSystemService(Context.AlarmService);

            // define hours to starts => after 6 PM
            Java.Util.Calendar calendarStart = Java.Util.Calendar.GetInstance(Java.Util.TimeZone.Default);
            calendarStart.Set(Java.Util.CalendarField.HourOfDay, 02);
            calendarStart.Set(Java.Util.CalendarField.Minute, 00);
            calendarStart.Set(Java.Util.CalendarField.Second, 00);

            //
            alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, calendarStart.TimeInMillis, repeatEveryday, PendingIntent.GetBroadcast(this, 1, intentAlarm, PendingIntentFlags.UpdateCurrent));
        }
예제 #13
0
        protected override void OnActivityResult(int requestCode, Result resultCode, Android.Content.Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);

            if (resultCode == Result.Canceled)
            {
                News activityNews = LocalActivityManager.GetActivity("TabNews") as News;
                if (activityNews != null)
                {
                    Toast.MakeText(activityNews, "Die Newsfeeds werden aktualisiert.", Android.Widget.ToastLength.Short).Show();
                    new FeedHelper().UpdateBGFeeds(activityNews);

                    AlarmManager  alarmManager  = (AlarmManager)GetSystemService(Context.AlarmService);
                    PendingIntent pendingIntent = PendingIntent.GetBroadcast(this, 0, new Intent(this, typeof(NewsAppAlarmService)), 0);
                    alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + 60, AlarmManager.IntervalHalfDay, pendingIntent);
                }
            }
        }
예제 #14
0
        public static void ScheduleAlarmManager(Context context, string content)
        {
            if (IsAlarmSet(context, content))
            {
                Toast.MakeText(context, "Alarm is already set", ToastLength.Long).Show();
            }
            else
            {
                Toast.MakeText(context, "ScheduleAlarmManager()", ToastLength.Long).Show();
                AlarmManager alarmManager = (AlarmManager)context.GetSystemService(Context.AlarmService);

                Calendar calendar = Calendar.GetInstance(Java.Util.TimeZone.Default);
                calendar.Set(CalendarField.HourOfDay, 1);
                calendar.Set(CalendarField.Minute, 1);

                alarmManager.SetInexactRepeating(AlarmType.RtcWakeup, calendar.TimeInMillis,
                                                 60 * 1000, GetPendigIntent(context, content)); // AlarmManager.IntervalDay
            }
        }
예제 #15
0
        public void WireUpTrackLocationService()
        {
            AlarmManager alarm = (AlarmManager)this.GetSystemService(Context.AlarmService);

            MessagingCenter.Subscribe <StartLocationServiceMessage>(this, "StartLocationServiceMessage", message =>
            {
                //Xamarin.Forms.Forms.Context.StartActivity(new Android.Content.Intent(Android.Provider.Settings.ActionLocat‌​ionSourceSettings));

                var intent = new Intent(this, typeof(TrackLocationService));

                //StartService(intent);

                //PendingIntent pendingServiceIntent = PendingIntent.GetBroadcast(this, 0, new Intent(intent), PendingIntentFlags.UpdateCurrent);
                PendingIntent pendingServiceIntent = PendingIntent.GetService(this, 0, new Intent(intent), PendingIntentFlags.UpdateCurrent);


                alarm.SetInexactRepeating(AlarmType.RtcWakeup, 60 * 1000, 60 * 1000, pendingServiceIntent);
                //alarm.SetRepeating(AlarmType.RtcWakeup, 0, 10 * 1000, pendingServiceIntent);
            });

            MessagingCenter.Subscribe <StopLocationServiceMessage>(this, "StopLocationServiceMessage", message =>
            {
                var intent = new Intent(this, typeof(TrackLocationService));
                StopService(intent);

                PendingIntent pendingServiceIntent = PendingIntent.GetService(this, 0, new Intent(intent), PendingIntentFlags.UpdateCurrent);
                alarm.Cancel(pendingServiceIntent);

                // Build the notification:
                NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                                                     .SetAutoCancel(true) // Dismiss from the notif. area when clicked
                                                     .SetContentIntent(pendingServiceIntent)
                                                     .SetOngoing(false);

                // Finally, publish the notification:
                NotificationManager notificationManager =
                    (NotificationManager)GetSystemService(Context.NotificationService);
                notificationManager.Notify(1000, builder.Build());
            });
        }
예제 #16
0
        public void SetAlarm(AppModels.UserCondition condition)
        {
            long         now     = SystemClock.ElapsedRealtime();
            Context      context = Forms.Context;
            AlarmManager am      = (AlarmManager)context.GetSystemService(Context.AlarmService);

            Intent intent = new Intent(context, this.Class);

            intent.PutExtra("conditionId", condition.Id);
            intent.PutExtra("conditionName", condition.Condition);

            long waitTime = condition.ReminderIntervalMillis();

            if (waitTime <= 0)
            {
                return;
            }

            PendingIntent pi = PendingIntent.GetBroadcast(context, 0, intent, 0);

            am.Cancel(pi);
            am.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, now + waitTime, waitTime, pi);
        }
        private void UpdateAlarm(Context context)
        {
            AlarmManager am       = (AlarmManager)context.GetSystemService(Context.AlarmService);
            int          interval = Settings.DefaultInterval;

            bool startNow       = !alarmStarted;
            long intervalMillis = (long)TimeSpan.FromMinutes(interval).TotalMilliseconds;
            long triggerAtTime  = SystemClock.ElapsedRealtime() + intervalMillis;

            if (startNow)
            {
                EnqueueWork(context, new Intent(context, typeof(WeatherComplicationIntentService))
                            .SetAction(ACTION_UPDATECOMPLICATIONS));
            }

            PendingIntent pendingIntent = GetAlarmIntent(context);

            am.Cancel(pendingIntent);
            am.SetInexactRepeating(AlarmType.ElapsedRealtime, triggerAtTime, intervalMillis, pendingIntent);
            alarmStarted = true;

            Logger.WriteLine(LoggerLevel.Info, "{0}: Updated alarm", TAG);
        }
 public void ScheduleAlarms(AlarmManager alarmManager, PendingIntent pendingIntent, Context context)
 {
     alarmManager.SetInexactRepeating(AlarmType.ElapsedRealtimeWakeup, SystemClock.ElapsedRealtime() + 6000, AlarmManager.IntervalFifteenMinutes, pendingIntent);
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="request"></param>
        protected virtual bool ShowLater(NotificationRequest request)
        {
            if (request.Schedule.NotifyTime is null ||
                request.Schedule.NotifyTime <= DateTime.Now) // To be consistent with iOS, Do not Schedule notification if NotifyTime is earlier than DateTime.Now
            {
                return(false);
            }

            var dictionaryRequest = NotificationCenter.GetRequestSerialize(request);

            var intent = new Intent(Application.Context, typeof(ScheduledAlarmReceiver));

            foreach (var item in dictionaryRequest)
            {
                intent.PutExtra(item.Key, item.Value);
            }
            var pendingIntent = PendingIntent.GetBroadcast(
                Application.Context,
                request.NotificationId,
                intent,
                PendingIntentFlags.UpdateCurrent
                );

            var utcAlarmTimeInMillis = (request.Schedule.NotifyTime.Value.ToUniversalTime() - DateTime.UtcNow).TotalMilliseconds;
            var triggerTime          = (long)utcAlarmTimeInMillis;

            if (request.Schedule.RepeatType != NotificationRepeat.No)
            {
                TimeSpan?repeatInterval = null;
                switch (request.Schedule.RepeatType)
                {
                case NotificationRepeat.Daily:
                    // To be consistent with iOS, Schedule notification next day same time.
                    repeatInterval = TimeSpan.FromDays(1);
                    break;

                case NotificationRepeat.Weekly:
                    // To be consistent with iOS, Schedule notification next week same day same time.
                    repeatInterval = TimeSpan.FromDays(7);
                    break;

                case NotificationRepeat.TimeInterval:
                    if (request.Schedule.NotifyRepeatInterval.HasValue)
                    {
                        repeatInterval = request.Schedule.NotifyRepeatInterval.Value;
                    }
                    break;
                }

                if (repeatInterval == null)
                {
                    return(true);
                }
                var intervalTime = (long)repeatInterval.Value.TotalMilliseconds;

                MyAlarmManager.SetInexactRepeating(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime() + triggerTime, intervalTime, pendingIntent);
            }
            else
            {
                if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
                {
                    MyAlarmManager.SetExactAndAllowWhileIdle(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime() + triggerTime, pendingIntent);
                }
                else
                {
                    MyAlarmManager.SetExact(AlarmType.ElapsedRealtime, SystemClock.ElapsedRealtime() + triggerTime, pendingIntent);
                }
            }

            AddPreferencesNotificationId(PreferencesPendingIdListKey, request.NotificationId);

            return(true);
        }