2013-04-16 1 views
0

Я хочу устанавливать уведомления/сигналы тревоги каждый день в определенное время. Обратите внимание, что эти времена могут быть разными для повседневной жизни. Например, у меня есть база данных, из которой я получаю 5 разных записей/раз в день, например, 6 утра, 13:30, 16:30, 19:30, 22:00. Я хочу установить будильник для этих времен. На следующий день эти времена могут быть разными. Они могут быть отключены на 2-5 минут и более. В принципе, я не могу установить повторяющийся сигнал тревоги в одно и то же время каждый день. Мне нужно проверить запись в моей базе данных, чтобы узнать, в какое время я должен запланировать ее.установить нерегулярные сигналы тревоги ежедневно с помощью alarmManager

Что такое хороший и эффективный способ сделать это. Я рассмотрел несколько вопросов переполнения стека для установки нескольких аварийных сигналов. Но вот как мне это сделать? Должен ли я просто читать целые записи базы данных за неделю в течение 5 дней/дней в течение 7 дней. И установить около 35 сигналов тревоги вместе? Или я должен просто установить один сигнал тревоги за раз. И когда эта тревога запускается, просто прочитайте следующую запись из базы данных и заплатите за нее тревогу за это время?

ответ

1

Напишите службу, которая будет получать 5 значений из базы данных каждый день в определенное время.

Затем добавьте несколько записей в AlarmManger с различным уникальным идентификатором.

Добавление тревоги в определенное время:

Calendar calendar = Calendar.getInstance(); 

//9 AM 
calendar.set(Calendar.HOUR_OF_DAY, 9); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
PendingIntent pi = PendingIntent.getService(context, 0, new Intent(context, YourClass.class), PendingIntent.FLAG_UPDATE_CURRENT); 
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 

Установка Multiple тревоги:

AlarmManager[] alarmManager=new AlarmManager[24]; 
intentArray = new ArrayList<PendingIntent>(); 
for(f=0;f<arr2.length;f++){ 
    Intent intent = new Intent(AlarmR.this, Riciving.class); 
    pi=PendingIntent.getBroadcast(AlarmR.this, f,intent, 0); 

    alarmManager[f] = (AlarmManager) getSystemService(ALARM_SERVICE); 
    alarmManager[f].set(AlarmManager.RTC_WAKEUP,arr2[f] ,pi); 

    intentArray.add(pi); 

} 

Надеется, что это должно работать.

+0

Спасибо, я попробую. Что делать, если я хочу отменить и перепланировать? Напр. пользователь может изменить настройку, из-за которой 5 раз в день будут изменены. – fzansari

+0

Вы можете добавить настройки или изменить настройки для обслуживания. Чтобы изменить или перенести его, просто отредактируйте его и запустите его снова. Это будет работать. Некоторые из приложений «auto sms» google play store используют ту же концепцию. Попробуйте сделать это. – John

+0

@John, что у вас есть в arr2? на самом деле мне нужно это реализовать. –