мое приложение предназначено для запуска службы в определенное время.Таймер (Alarmmanger) запускается сразу же в 12:00 - 12:59 (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; * но это не сработало.
У вас есть идеи, как сделать это надежным?
Sincerly, Вольфен
Это можно упростить, см. Здесь: http://blog.blundell-apps.com/notification-for-a-user-chosen-time/ – Blundell