我正在使用Xamarin for android,我想使用RTC_WAKEUP标志来设置闹钟。有谁知道如何计算触发时间(以毫秒为单位)?我可以用 DateTime.ToUniversalTime,但是alarmmanager set方法正在寻找一个很长的(毫秒)。
我可以使用经过的时间 SystemClock.ElapsedRealtime()
但RTC_WAKEUP的文档说使用System.currentTimeMillis()。我找不到c#中的等价物。有什么想法吗?
答案 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();