в ожидании тревоги на андроид - PullRequest
0 голосов
/ 13 февраля 2011

При настройке службы на отключение в определенное время я использую системную службу AlarmManager.Все проходит без проблем, служба вызывается и выполняются действия.

Когда время будильника достигнуто, служба запускается, и в этот момент я получаю системное время (System.currentTimeMillis ()).Я предполагаю, что это не будет фактическим временем начала обслуживания.Есть ли способ получить время, которое было установлено для этого PendingIntent?

т.е.

Установить будильник на 9 часов утра.
DoStuffService запускается в 9:00.должен был начаться в 9 утра и использовать это значение для будущих функций.

Ответы [ 2 ]

4 голосов
/ 19 февраля 2012

Когда вы создаете намерение для своего будильника, вы можете поместить в него дополнительные данные, включая время будильника, следующим образом:

Intent intent = new Intent("action name");

//put extra data into the intent:
intent.putExtra("alarm_time_hours", hours);
intent.putExtra("alarm_time_minutes", minutes);

PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);

Затем в вашем приемнике или службе вам нужно получить это дополнительноеданные из полученного намерения.Используйте что-то вроде этого:

Bundle bundle = intent.getExtras();
if(bundle.containsKey("alarm_time_hours")) {
    int hours = bundle.getInt("alarm_time_hours");
}
if(bundle.containsKey("alarm_time_minutes")) {
    int minutes = bundle.getInt("alarm_time_minutes");
}
0 голосов
/ 13 февраля 2011

Есть ли способ получить время, установленное для этого PendingIntent?

Нет, извините.

Однако вам не должно быть очень сложно определить это самостоятельно. Следуя вашему примеру, если ваша служба сообщает, что сейчас 09: 00: 02.36, вы сможете округлить ее, чтобы определить, что это сигнал тревоги в 9:00.

...