C# 与Xamarin一起使用RTC_唤醒

C# 与Xamarin一起使用RTC_唤醒,c#,android,xamarin.android,alarmmanager,C#,Android,Xamarin.android,Alarmmanager,我正在为android使用Xamarin,我想使用RTC_唤醒标志设置警报。有人知道如何以毫秒为单位计算触发时间吗?我可以用 DateTime.ToUniversalTime,但是alarmmanager设置方法需要很长的时间(毫秒) 对于经过的时间,我可以使用 SystemClock.ElapsedRealtime() 但是RTC_WAKEUP的文档中说要使用System.currentTimeMillis()。我在c#中找不到等价物。有什么想法吗?我找不到内置的方法,但自1970年以来的毫秒

我正在为android使用Xamarin,我想使用RTC_唤醒标志设置警报。有人知道如何以毫秒为单位计算触发时间吗?我可以用 DateTime.ToUniversalTime,但是alarmmanager设置方法需要很长的时间(毫秒)

对于经过的时间,我可以使用 SystemClock.ElapsedRealtime()


但是RTC_WAKEUP的文档中说要使用System.currentTimeMillis()。我在c#中找不到等价物。有什么想法吗?

我找不到内置的方法,但自1970年以来的毫秒数很容易计算。以下操作适用于我,并在正确的时间唤醒机器:

DateTime dtBasis = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); // Android times are quoted as milliseconds since start of 1970
alarm_manager.Set(AlarmType.RtcWakeup, (long)wake_up_at.ToUniversalTime().Subtract(dtBasis).TotalMilliseconds, my_intent);

在XamarinAndroid中,您可以使用
Java.Lang.JavaSystem.CurrentTimeMillis()

如何在18:30设置Wakup警报的示例:

Java.Util.Calendar calendar = Java.Util.Calendar.Instance;
calendar.Set(CalendarField.HourOfDay, 18);
calendar.Set(CalendarField.Minute, 30);
alarmManager.SetRepeating(AlarmType.RtcWakeup, calendar.TimeInMillis, AlarmManager.IntervalDay, pendingAlarmIntent);

使用DateTimeOffset类的扩展名tounixTimeMillicles()

long trigger = new DateTimeOffset(triggerDate).ToUnixTimeMilliseconds();