Как установить точное время для Xamarin.Android AlarmManager - PullRequest
0 голосов
/ 18 февраля 2019

Я устанавливаю локальные уведомления для запуска в определенное время в приложении Xamarin.Android.Это все работает, но установленное время, кажется, немного смещено, установленное время определяется пользовательским вводом (с точностью до минуты).При дальнейшей настройке уведомлений в будущем (дни спустя) уведомление срабатывает на следующую минуту, чем следовало бы.

Ниже приведен мой текущий код для расчета времени.calendarEvent.StartTime - это свойство DateTime.

TimeSpan span = calendarEvent.StartTime - DateTime.Now;
manager.Set(AlarmType.ElapsedRealtime,(long)(SystemClock.ElapsedRealtime() + span.TotalMilliseconds),pendingIntent);     

Я хотел бы знать, как точно рассчитать время, чтобы уведомления запускались в начале минуты, которую они должны.В текущем коде они запускаются в середине минуты или позже.

1 Ответ

0 голосов
/ 18 февраля 2019

Если вам действительно нужна точность, попробуйте использовать метод SetExact () класса диспетчера аварийных сигналов.

TimeSpan span = calendarEvent.StartTime - DateTime.Now;
manager.SetExact(AlarmType.ElapsedRealtime,(long)(SystemClock.ElapsedRealtime() + span.TotalMilliseconds),pendingIntent);

И я не знаю, относится ли это к делу, но если вы используете события для календаря, возможно, вам следует использовать RTC, поскольку AlarmType.RTC основан на часах, тогда как AlarmType.ElapsedRealTimeна основе времени, прошедшего с момента включения устройства.

...