2013-10-24 7 views
2

У меня есть активность, вот две кнопки:Как управлять BroadcastReceiver через AlarmManager?

  1. Кнопка One для "Выберите Alarm Time". Когда я нажимаю на него, появляется TimePicker, и я выбираю время для Alarm.

  2. Кнопка Two для «Set Alarm». Когда я нажимаю на него, установите будильник.

Что я делаю:

На установленное время тревоги я позову BroadcastReceiver. Для демонстрации я печатать только время тревог, что я установил и строка в Toast

Что такое запрос:

"Если я установить время будильника, как, текущего времени 4:00 вечера и I установить время Alarm 6:00 вечера. В этом случае тревоги всегда вызывать BroadcastReceiver и это Work Fine.

BUT

Если Текущее время 4:00 PM, и я установил Тревога 2.00 PM, затем Он вызывает BroadCastReceiver одновременно, и я НЕ ХОЧУ ЭТОТ. "

.

Для AlarmManager я использую этот фрагмент:

AlarmManager am = (AlarmManager) getSystemService(SetAlarm.ALARM_SERVICE); 

Intent intent1 = new Intent(SetAlarm.this, BroadCast.class); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(SetAlarm.this, 0,intent1,PendingIntent.FLAG_UPDATE_CURRENT); 

am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 
+1

Вниз избирателя, пожалуйста, сделайте это правильно, если я попрошу что-то не так или предложит мне, что я сделал или спрошу не так? –

+1

Это похоже на законный вопрос для меня. +1 – sarwar

+0

сделайте это, внутри вещательного приемника, проверьте время, я предполагаю, что u хранит значение внутри общего предпочтения или что-то в этом роде, сравните текущее время n, установленное для дня. Если это до текущего времени, не делайте ничего, кроме выполнения операции @AM, я столкнулся с тем же сервисом, и поэтому мне пришлось его решить, поставив условие –

ответ

0
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR, 14); 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND,0); 

if(calendar.getTimeInMillis()<System.currentTimeMillis()) 
    { 
     calendar.add(Calendar.DATE, 1); 
    } 
am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pendingIntent); 

вы можете сделать что-то подобное.

Смежные вопросы