У меня есть диспетчер аварийных сигналов, который я хочу запускать в 6 часов каждый день. Я вызываю уведомление класса, когда приложение запускается первым и, следовательно, оно устанавливает повторяющийся сигнал тревоги на 6 AM каждый день (повторно).AlarmManager не срабатывает на следующий день
Аварийный менеджер прекрасно работает, когда пользователь устанавливает (и запускает приложение в первый раз) с 6 до 9 утра, однако если пользователь запускает приложение в первый раз после 9 часов утра, я должен добавить день и запустите будильник на следующий день в 6 утра. При этом (изменение даты на следующий день) будильник срабатывает в случайное время, около 10 часов вечера (это огромная разница). Вот мой код»
public notification(Context context) {
this.context=context;
Intent appstart=new Intent(context,appstartreceiver.class);
PendingIntent pi=PendingIntent.getBroadcast(context,0,appstart,PendingIntent.FLAG_UPDATE_CURRENT); // For appstart in the morning
AlarmManager alarmManager = (AlarmManager)context.getSystemService(context.ALARM_SERVICE);
Calendar currentCal=Calendar.getInstance();
Calendar startapp = Calendar.getInstance();// FOr app start in the morning
startapp.set(Calendar.HOUR_OF_DAY,6);
startapp.set(Calendar.MINUTE, 0);
startapp.set(Calendar.SECOND, 0);
long currentTime = currentCal.getTimeInMillis();
int diff=(int)(currentTime-startapp.getTimeInMillis())/(1000*60*60);
if (diff<3)
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,startapp.getTimeInMillis(),1000*24*60*60,pi);
else {
startapp.add(Calendar.HOUR_OF_DAY, 24);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, startapp.getTimeInMillis(), 1000 * 24 * 60 * 60, pi);
}
}
Я не получил вашу часть. Если вы хотите установить повторяющийся сигнал тревоги каждый день в 6 часов утра, тогда alarmManager.setRepeating (AlarmManager.RTC_WAKEUP, startapp.getTimeInMillis(), 1000 * 24 * 60 * 60, pi); достаточно. – Chandrakanth
При этом, когда пользователь устанавливает приложение, скажем, 1 PM, андроид планирует будильник на следующий день в 13:00, а не 6! Это проблематично! –
Нет, он будет срабатывать только с 6 часов ... Я думаю, что вы протестировали вот так ... после запуска приложения в 1 час дня, после чего вы изменили дату устройства на следующий день, тогда ваш будильник будет запущен в это время. .это правильно?? – Chandrakanth