我的應用程序旨在在特定時間啓動服務。定時器(Alarmmanger)立即在12AM - 12:59 AM(00:00 - 00:59)開始
我使用timePicker接收時間
time.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hourOfDay, int min) {
hour = hourOfDay;
minute = min;
}
});
您可以按一個按鈕來激活alarmmanager。意圖應該在這個時候開始。
public void onClick(View v) {
cal = Calendar.getInstance();
int _hour = hour;
int tmpHour = cal.get(Calendar.HOUR_OF_DAY);
int tmpMinute = cal.get(Calendar.MINUTE);
// Alarm is today?
if (hour > tmpHour || (tmpHour == hour && tmpMinute < minute)){
tmpHour *= 60;
_hour *= 60;
}
**// Add 24Hours to get difference.
else {
tmpHour *= 60;
_hour *= (_hour + 24) * 60;
}**
int minutesToAdd = (_hour + minute) - (tmpHour + tmpMinute);
Log.d("AlarmExample", "Need to add " + minutesToAdd + " minutes");
cal.add(Calendar.MINUTE, minutesToAdd);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
...
//alarmmanager
AlarmManager amanag = (AlarmManager) getSystemService(ALARM_SERVICE);
amanag .set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
我這裏有一個問題: 當你拿起上午12:00和12:59之間的時間,_hour * =(_hour + 24)* 60;當您觸摸按鈕時,會立即開始報警。
我試圖將其更改爲_hour =(_hour + 24)* 60; *但它不起作用。
你有什麼想法如何使這可靠嗎?
誠懇, 沃爾芬
這可以簡化,請參閱此處:http://blog.blundell-apps.com/notification-for-a-user-chosen-time/ – Blundell