2015-01-12 63 views
0

嗨我需要使用時間選擇器來設置特定日期的鬧鐘。當我給出靜態輸入時,鬧鐘設置不正確並響鈴。 例如:我給靜態輸入(與日期,月份和年份),但它不振鈴。這是我的代碼。如何在android中設置特定日期的鬧鐘?

//button click 
private OnClickListener reminderEventListener = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     openTimePickerDialog(false); 
    } 
    private void openTimePickerDialog(boolean is24r) { 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.MONTH,1);//month 
     calendar.set(Calendar.YEAR,2015);//year 
     calendar.set(Calendar.DAY_OF_MONTH,12);//day 
     timePickerDialog = new TimePickerDialog(
       EventDetail.this, 
       onTimeSetListener, 
       calendar.get(Calendar.HOUR_OF_DAY), 
       calendar.get(Calendar.MINUTE), 
       is24r); 
     timePickerDialog.setTitle(eventDates+" "+days+","+eventYear); 

     timePickerDialog.show(); 
    } 
    OnTimeSetListener onTimeSetListener 
    = new OnTimeSetListener(){ 

     @Override 
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 

      Calendar calNow = Calendar.getInstance(); 
      Calendar calSet = (Calendar) calNow.clone(); 
      calSet.set(Calendar.MONTH,1);//month 
      calSet.set(Calendar.YEAR,2015);//year 
      calSet.set(Calendar.DAY_OF_MONTH,12);//day 
      calSet.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      calSet.set(Calendar.MINUTE, minute); 
      calSet.set(Calendar.SECOND, 0); 
      calSet.set(Calendar.MILLISECOND, 0); 

      if(calSet.compareTo(calNow) <= 0){ 
       //Today Set time passed, count to tomorrow 
       calSet.add(Calendar.DATE, 1); 
      } 

      setAlarm(calSet); 
     } 

     private void setAlarm(Calendar targetCal) { 
      // TODO Auto-generated method stub 
      Log.e("Give input", "12/01/2015"); 
      Intent intent = new Intent(getBaseContext(), AlarmReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, intent, 0); 
      AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
      alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent); 

     }}; 
}; 
AlarmReceiver: 

public class AlarmReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0); 
    NotificationManager manager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE); 
     Notification noti = new Notification(android.R.drawable.stat_notify_more, "Wake up alarm", System.currentTimeMillis()); 
     noti.setLatestEventInfo(context, "My Alarm", "WAKE UP...!!!", sender); 
     noti.flags = Notification.FLAG_AUTO_CANCEL; 
     manager.notify(R.string.app_name, noti); 

     //intent to call the activity which shows on ringing 
     Intent myIntent = new Intent(context, EventDetail.class); 
     myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(myIntent); 

     //display that alarm is ringing 
     Toast.makeText(context, "Alarm Ringing...!!!", Toast.LENGTH_LONG).show(); 
     Log.e("Alarm ringing", "alarm ringing"); 

} 

    I set particular time and tested.alarm is not triggering. 
    I have given permission in manifest too. 
    <receiver android:name=".AlarmReceiver" android:process=":remote" /> 

回答

1

試着把MONTH設置爲0,不是1,它會響,MONTHS從0開始編號,不知道爲什麼會有這個異常。

另外我不知道如何在millis中獲得時間正在工作。 嘗試太:

long time = calSet.getTime().getTime(); 

然後把時間alarmManager.set()。

相關問題