2013-09-20 5 views
0

У меня есть этот код в моем приложенииAlarmManager пожаров каждый раз, когда приложение запускается

Calendar calendar = Calendar.getInstance(); 

      calendar.set(Calendar.HOUR_OF_DAY, 11); 
      calendar.set(Calendar.MINUTE, 30); 
      calendar.set(Calendar.SECOND, 0); 
      calendar.set(Calendar.AM_PM,Calendar.AM); 
     //Debug!!!!! 
     //calendar.set(Calendar.SECOND, Calendar.SECOND+5); 
      Intent myIntent = new Intent(MainActivity.this, MyReceiver.class); 
      pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0); 

      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
      alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY ,pendingIntent); 

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

ответ

3

Это немедленно сгорит текущее время после 11:30, потому что вы устанавливаете объект Calendar, чтобы быть в прошлом.

Одним из решений является сравнение вашего Calendar с текущим временем (System.currentTimeMillis()) и добавление дня, если ваш Calendar в прошлом.

+0

Спасибо большое! Это сработало, как вред! – sarakinos

0
alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY ,pendingIntent); 

Здесь время, когда повторить сигнал тревоги задается calendar.getTimeInMillis() функцией. это займет текущее время, и будильник загорится. правые .. Пусть говорят, что вы хотите, чтобы огнь тревоги после того, как несколько секунд, после чего вы должны дать время в миллисекундах,

calendar.getTimeInMillis() + 10000; //here 10000 is milliseconds 

Так что вам нужно сделать первый раз CALCulate в миллисекундах, когда вы хотите пожарную сигнализацию. позволяет говорить

interval = nnnnnnnn; // replace nnnnnn with your time interval in milliseconds 
calendar.getTimeInMillis()+ interval; 

alarmManager.setRepeating(AlarmManager.RTC, calendar.getTimeInMillis()+interval, AlarmManager.INTERVAL_DAY ,pendingIntent); 

Done ... Этого способ Im используя в моем приложении ... Попробуйте это .. Это будет работать для U. Если вам нужно мой код ... электронная почта: ramesh.mnnit @ gmail.com

0

Сравните ваше системное время с временем будильника .. Если время будильника меньше, чем системное время, приемник будет работать .. но если нет, ничего не произойдет ... Следуйте приведенной ниже ссылке для получения более подробной информации - Scheduled Notifications Triggers Every Time I Open App

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