2015-10-07 94 views
0

我試圖每天使用AlarmManager做一些任務,如以下代碼所示。AlarmManager在錯誤的時間觸發

public void start_alarm(){ 
    SharedPreferences.Editor editor=alarm_prefs.edit(); 
    editor.putString("alarm", "alarm"); 
    editor.apply(); 
    editor.clear(); 

    Intent start_alarm=new Intent(MainPage.this,MailService.class); 
    PendingIntent pi=PendingIntent.getService(MainPage.this, 100, start_alarm, 0); 
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 

    Calendar calendar = Calendar.getInstance(); 

    calendar.add(Calendar.DATE,1); 
    calendar.set(Calendar.HOUR_OF_DAY, 12); 
    calendar.set(Calendar.MINUTE, 30); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.AM_PM, Calendar.AM); 

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000*60*60*24,pi); 
} 

Alarm在這方面沒有問題。但在代碼中,我在12:30 AM上設置了鬧鐘。但是上面的代碼會觸發報警06:30 AM。我在那裏做錯了什麼,請通知我。我在12:15 AM中的其他應用中設置了鬧鐘。但是它也會在錯誤的時間觸發,即06:15 AM。請幫我解決一下這個。

回答

1

若要在12.30 AM設置報警,您可以嘗試此代碼。

// Set the alarm's trigger time to 12.30 A.M 
calendar.add(Calendar.DATE,1); 
calendar.set(Calendar.HOUR_OF_DAY, 0); 
calendar.set(Calendar.MINUTE, 30); 
calendar.set(Calendar.SECOND, 0); 

,而不是

calendar.add(Calendar.DATE,1); 
calendar.set(Calendar.HOUR_OF_DAY, 12); 
calendar.set(Calendar.MINUTE, 30); 
calendar.set(Calendar.SECOND, 0); 
calendar.set(Calendar.AM_PM, Calendar.AM);