2013-06-07 3 views
0

Я использую AlarmManager для уведомления об ошибке. Я хочу, чтобы это уведомление срабатывало в 10:30 утра и повторялось каждые 24 часа. Я не хочу уведомления при открытии приложения.

Я отправляю свой код, основная проблема заключается в том, что он запускает будильник в конечное время также в 10:30 (если часовой пояс телефона составляет 12 часов). Я проверяю этот код с изменением yest, и я получил сигнал тревоги в 10:30, 1, 4, 7.

Пожалуйста, помогите мне решить проблему, я пытаюсь решить ее с давних времен.

Код:Уведомление о пожаре с AlarmManager

Intent myIntent = new Intent(Splash.this, AlarmReceiver.class); 

    PendingIntent pendingIntent = PendingIntent.getBroadcast(Splash.this, 
      0, myIntent, 0); 

    AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 

    Calendar firingCal = Calendar.getInstance(); 
    Calendar currentCal = Calendar.getInstance(); 

    firingCal.set(Calendar.HOUR_OF_DAY, 10); 
    firingCal.set(Calendar.MINUTE, 30); 
    firingCal.set(Calendar.SECOND, 0); 

    long intendedTime = firingCal.getTimeInMillis(); 
    long currentTime = currentCal.getTimeInMillis(); 

    if (intendedTime >= currentTime) { 
     alarmManager.setRepeating(AlarmManager.RTC, intendedTime, 
       AlarmManager.INTERVAL_DAY, pendingIntent); 

    } else { 
     firingCal.add(Calendar.DAY_OF_MONTH, 1); 
     intendedTime = firingCal.getTimeInMillis(); 

     alarmManager.setRepeating(AlarmManager.RTC, intendedTime, 
       AlarmManager.INTERVAL_DAY, pendingIntent); 
    } 

ответ

1

Попробуйте использовать:

firingCal.set(Calendar.HOUR_OF_DAY, 10); 

, потому что это час в 24-часовой нотации.

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

+0

@lvo Beckers, я добавляю заявление в другое время, но в это время оно отправило уведомление только на следующий день, nt после этого ... –

+0

проверить измененный пост и сообщить мне, если что-то не так. –

+0

@Jeeten Вы уверены, что это не работает? Кроме того, вы уверены, что вы не выключили свой телефон тем временем, потому что после перезагрузки будильники теряются. См. Документацию по [AlarmManager] (http://developer.android.com/reference/android/app/AlarmManager.html). Зарегистрированные аварийные сигналы сохраняются, когда устройство спит (и при необходимости может активировать устройство, если оно отключается во время в то время), но будет очищен, если он выключится и перезагрузится ». –

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