3

Android 用の Xamarin を使用していますが、RTC_WAKEUP フラグを使用してアラームを設定したいと考えています。トリガー時間をミリ秒単位で計算する方法を知っている人はいますか? DateTime.ToUniversalTime を使用できますが、alarmmanager set メソッドは long (ミリ秒) を探しています。

経過時間については、 SystemClock.ElapsedRealtime() を使用できます

しかし、RTC_WAKEUP のドキュメントには、System.currentTimeMillis() を使用するように記載されています。C#で同等のものを見つけることができません。何か案は?

4

3 に答える 3

2

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);
于 2015-01-20T16:09:53.873 に答える
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);
于 2013-08-31T10:27:26.597 に答える