2013-05-11 2 views
0

Я начинаю свой будильник в 8 утра, используя код ниже, повторяя каждые 1 мин. Я хочу остановить эту тревогу, повторяющуюся в 12 часов. Я начинаю тревогу, как это:Как остановить повторение сигнала тревоги в определенное время

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
PendingIntent loggerIntent1 = PendingIntent.getBroadcast(this, 0,new Intent(this,AlarmReceiver.class), 0); 
Calendar timeOff9 = Calendar.getInstance(); 
timeOff9.set(Calendar.HOUR_OF_DAY, 08); 
timeOff9.set(Calendar.MINUTE, 00); 
timeOff9.set(Calendar.SECOND, 00); 


long duration = interval * 60 * 1000; 
manager.setRepeating(AlarmManager.RTC_WAKEUP,timeOff9.getTimeInMillis(), duration, loggerIntent1); 

и остановки с этим кодом:

Calendar timeOff = Calendar.getInstance(); 
timeOff.set(Calendar.HOUR_OF_DAY,12); 
timeOff.set(Calendar.MINUTE,00); 
timeOff.set(Calendar.SECOND, 00); 

manager.set(AlarmManager.RTC_WAKEUP,timeOff.getTimeInMillis(), loggerIntent1); 
manager.cancel(loggerIntent1); 
loggerIntent1.cancel(); 

но код для остановки вызывает приложение, чтобы работать неправильно. Я пишу код, чтобы остановить будильник сразу после первой тревоги. это проблема? Нужно ли писать еще один сигнал тревоги. Пожалуйста, направляйте.

+0

Ну, вам может понадобиться еще один аварийный сигнал для его завершения. Ссылка http://stackoverflow.com/questions/23829176/cancel-repeating-alarm-at-specific-time –

ответ

0

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

Представьте это, продолжайте с первой частью кода, где вы вызываете намерение на каждые duration.

Но внутри вашего AlarmReceiver.class, который будет проверять текущее время, и выполните AlarmManager.cancel(), когда время больше 12pm.

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