2017-08-01 116 views
0

我嘗試使用時間選取器設置精確報警時遇到問題。 我設置TimePicker像這樣的處理程序:僅在Xamarin.Android中使用TimePicker設置AlarmManager,立即開始報警

TimePicker

TPBtn.Click += delegate 
      { 
       TimePickerDialog dialog = new TimePickerDialog(this, TimeSelectedListener, DateTime.Now.Hour, DateTime.Now.Minute, true); 
       dialog.Show(); 
      }; 

private void TimeSelectedListener(object sender, TimePickerDialog.TimeSetEventArgs e) 
     { 
      hour = e.HourOfDay; 
      minute = e.Minute; 

      DateTime dtNow = DateTime.Now; 
      int DayOfMonth = dtNow.Day; 
      int Month = dtNow.Month; 
      int Year = dtNow.Year; 

      Calendar cl = Calendar.Instance; 
      cl.Set(Year, Month, DayOfMonth, hour, minute, 0); 

      AlarmManager am = (AlarmManager)this.GetSystemService(AlarmService); 
      Intent intent = new Intent(this, typeof(OneShotAlarm)); 
      intent.AddFlags(ActivityFlags.NewTask); 
      var source = PendingIntent.GetBroadcast(this, 0, intent, 0); 

      am.SetExact(AlarmType.RtcWakeup, cl.TimeInMillis, source); 

      Toast.MakeText(this, "Set Today: " + cl.TimeInMillis, ToastLength.Short).Show(); 
     } 

不幸的是,這樣的警報時,立即播放。 我也嘗試使用am.SetAlarmClock,但我不知道如何使用RTC時間,你能幫助我嗎?

我已經讀了很多絲線猶如I am trying to set alarm on specific time using alarm manager but alarm intiated instantly?Set AlarmManager from DatePicker and TimePicker

非常感謝。

回答

0

am.SetExact(AlarmType.RtcWakeup, cl.TimeInMillis, source);

cl.TimeInMillis被稱爲上Calendar.Instance還沒有以任何方式被操作。這意味着它被設置爲「現在」,因此警報立即發射。

您不清楚您想要什麼時候啓動鬧鐘,但您需要提供正確的TimeInMillis才能啓動鬧鐘。

+0

Ohh對不起,我在複製/粘貼到線程期間刪除了一行,我的日曆設置如下:'cl.Set(Year,Month,DayOfMonth,hour,minute,0);' 火 –