1
을 Calendar
또는 GregorianCalendar
개체와 함께 올바르게 작동시키지 못합니다.특정 시간에 AlarmManager가 반복되도록 설정
Global.StartingTime
은 다른 클래스의 static DateTime
개체입니다. hour 속성은 시간을 24 시간 형식으로 반환합니다.
시도 1 - Calendar
가 사용 - 결과 :가 발생하지 않습니다
public void SetAlarm()
{
if (Global.StartingTime == null || Global.StartingTime == DateTime.MinValue) return;
Calendar now = Calendar.GetInstance (Java.Util.TimeZone.Default);
Calendar alarmTime = Calendar.GetInstance (Java.Util.TimeZone.Default);
alarmTime.Set(CalendarField.HourOfDay, Global.StartingTime.Hour);
alarmTime.Set(CalendarField.HourOfDay, Global.StartingTime.Minute);
if (alarmTime.Before(now))
alarmTime.Add(CalendarField.DayOfMonth, 1);
AlarmManager am = (AlarmManager) _context.GetSystemService (Context.AlarmService);
Intent intent = new Intent(_context, typeof(MainReceiver));
intent.PutExtra (ALARM_ACTION, true);
PendingIntent pi = PendingIntent.GetBroadcast (_context, 0, intent, 0);
am.SetRepeating (AlarmType.ElapsedRealtimeWakeup, alarmTime.TimeInMillis, AlarmManager.IntervalDay, pi);
AlarmSet = true;
}
시도 2 -결과 - GregorianCalendar
사용 : 화재 즉시,하지에 주어진 시간과 분을 . 난 그냥 (응용 프로그램은 지속적으로 서비스를 실행하고 나는 그것을 일어나 알람 관리기를 사용할 필요가 없습니다 내 특정한 경우에서 잘 작동하는 것 같다 대신 AlarmManager
의 타이머와 함께 이동하기로 결정했습니다
public void SetAlarm()
{
if (Global.StartingTime == null || Global.StartingTime == DateTime.MinValue) return;
GregorianCalendar now = new GregorianCalendar();
now.TimeInMillis = SystemClock.ElapsedRealtime();
GregorianCalendar alarmTime = new GregorianCalendar();
alarmTime.Add(CalendarField.DayOfYear, now.Get(CalendarField.DayOfYear));
alarmTime.Set(CalendarField.HourOfDay, Global.StartingTime.Hour);
alarmTime.Set(CalendarField.Minute, Global.StartingTime.Minute);
alarmTime.Set(CalendarField.Second, now.Get(CalendarField.Second));
alarmTime.Set(CalendarField.Millisecond, now.Get(CalendarField.Millisecond));
alarmTime.Set(CalendarField.Date, now.Get(CalendarField.Date));
alarmTime.Set(CalendarField.Month, now.Get(CalendarField.Month));
if (alarmTime.Before (now))
alarmTime.Add (CalendarField.DayOfYear, 1);
AlarmManager am = (AlarmManager) _context.GetSystemService (Context.AlarmService);
Intent intent = new Intent(_context, typeof(MainReceiver));
intent.PutExtra (ALARM_ACTION, true);
PendingIntent pi = PendingIntent.GetBroadcast (_context, 0, intent, 0);
am.SetRepeating (AlarmType.RtcWakeup, alarmTime.TimeInMillis, AlarmManager.IntervalDay, pi);
AlarmSet = true;
}