将RTC_WAKEUP与Xamarin一起使用

时间:2013-07-08 01:48:09

标签: c# android xamarin.android alarmmanager

我正在使用Xamarin for android,我想使用RTC_WAKEUP标志来设置闹钟。有谁知道如何计算触发时间(以毫秒为单位)?我可以用 DateTime.ToUniversalTime,但是alarmmanager set方法正在寻找一个很长的(毫秒)。

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

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

3 个答案:

答案 0 :(得分:2)

在Xamarin Android中,您可以使用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);

答案 1 :(得分:1)

我找不到内置方法,但自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);

答案 2 :(得分:0)

使用DateTimeOffset类的 ToUnixTimeMilliseconds()扩展名。

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