我正在使用Xamarin for android,我想使用RTC_WAKEUP标志来设置闹钟。谁知道如何计算触发时间,单位是毫秒?我可以使用DateTime.ToUniversalTime,但是alarmmanager set方法需要很长的时间(毫秒)。
对于运行时间,我可以使用SystemClock.ElapsedRealtime()
但是RTC_WAKEUP的文档说要使用System.currentTimeMillis()。我在c#中找不到对应的东西。有什么想法吗?
发布于 2015-01-21 00:09:54
在Xamarin Android中,你可以使用Java.Lang.JavaSystem.CurrentTimeMillis();
示例18:30设置唤醒告警:
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);发布于 2013-08-31 18:27:27
我找不到一个内置的方法,但是从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);发布于 2017-06-23 23:45:13
使用DateTimeOffset类的ToUnixTimeMilliseconds()扩展。
long trigger = new DateTimeOffset(triggerDate).ToUnixTimeMilliseconds();https://stackoverflow.com/questions/17518156
复制相似问题