Вопрос по alarmmanager, repeatingalarm, android-alarms, android – Повторите сигнал тревоги один раз в неделю в Android

4

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

Calendar calNow = Calendar.getInstance();
                SimpleDateFormat simpDate;
                simpDate = new SimpleDateFormat("kk:mm:ss");
                if(in_Date==1)
                {
                    calNow.set(Calendar.HOUR_OF_DAY, hourOfDay);
                    calNow.set(Calendar.MINUTE, minute);
                    calNow.set(Calendar.SECOND, 0);
                    calNow.set(Calendar.MILLISECOND, 0);
                }
            else if(in_Date==2)
                {
                    calNow.set(Calendar.HOUR_OF_DAY, hourOfDay);
                    calNow.set(Calendar.MINUTE, minute);
                    calNow.set(Calendar.SECOND, 0);
                    calNow.set(Calendar.MILLISECOND, 0);
                    calNow.set(Calendar.DAY_OF_WEEK,in_SelectedDay);
                }
                etTime.setText(simpDate.format(calNow.getTime()));
                Seconds=calNow.getTimeInMillis();

private void setAlarm(){

    //etTime.setText(simpDate.format(calNow.getTime()));

    Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(getBaseContext(), RQS_1, intent, 0);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

     if(in_Date==1)
     {

       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds,alarmManager.INTERVAL_DAY,pendingIntent);
     }
    else if(in_Date==2)
    {

        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds,1 * 60 * 60 * 1000,pendingIntent);
    }

}
Я думаю, это нужно учитывать, конечно, во время перезагрузки или выключения питания этот экземпляр AlarmManager будет уничтожен, неделя - долгое время, чтобы такое случалось с владельцем устройства :) diyoda_

Ваш Ответ

2   ответа
3

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

Моя идея-> установите будильник на все дни, проверьте состояние дня в приемнике будильника.

Мне нравится твоя идея. ;) Saeed.re
14
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds, AlarmManager.INTERVAL_DAY, pendingIntent);

лем дня, но затем устанавливаете интервал на.INTERVAL_DAY

Вы должны использоватьINTERVAL_DAY * 7 чтобы убедиться, что он повторяется на еженедельной основе:

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds, AlarmManager.INTERVAL_DAY * 7, pendingIntent);
Есть два случая: один на день, в котором я использовал INTERVAL_DAY, а другой - на неделю, в котором я использовал 1 * 60 * 60 * 1000. Supreet
Вы должны получить доступINTERVAL_DAY вstatic путьAlarmManager.INTERVAL_DAY * 7 Borja
Интервал определяется в миллисекундах.1 * 60 * 60 * 1000 миллисекунды это 1 час. Чтобы получить интервал в миллисекундах на неделю, вы можете использовать7 * 24 * 60 * 60 * 1000 или жеINTERVAL_DAY * 7 Leon Lucardie

Похожие вопросы