Как установить будильник каждый день в 8:00 - PullRequest
3 голосов
/ 08 сентября 2011

Я пытаюсь включить будильник каждый день в 8:00.

Я знаю, как создать будильник, но как настроить его на ежедневный запуск в 8:00 утра.

am.setRepeating()

1 Ответ

7 голосов
/ 08 сентября 2011

Вы можете использовать Календарь и установить его на нужное вам время.Затем вы должны сделать cal.getTimeInMillis() и использовать это для triggerAtTime, а интервал будет 24 * 60 * 60 * 1000 = 86 400 000

. Вам также необходимо убедиться, что BroadcastReceiver для загрузки завершен,таким образом, если телефон выключен, а затем снова включен, вы можете повторно запланировать будильник:

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

Для загрузки вы используете intent-filter "android.intent.action.BOOT_COMPLETED", и вы должны иметь разрешение "android.permission.RECEIVE_BOOT_COMPLETED", на всякий случай, если вынужна эта информация.

Для вашего удобства вот пара ссылок.Страница в календаре:

http://developer.android.com/reference/java/util/Calendar.html

И страница в AlarmManager:

http://developer.android.com/reference/android/app/AlarmManager.html

So how would that look inside AlarmManager.setRepeating()?

Вот метод:

setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)

И я предполагаю, что для типа вы хотели бы использовать ELAPSED_REALTIME, затем, чтобы получить triggerAtTime, вы получили бы календарь (назовите его cal), который совпал с 8:00 AM завтра утром, затем выполните

triggerAtTime = cal.getTimeInMillis()-Calendar.getInstance().getTimeInMillis()

Тогда это будет

alarmMan.setRepeating(AlarmManager.ELAPSED_REALTIME, triggerAtTime, 86400000, pendingIntent);

И я не знаю, как точно получить завтра в 8:00 утра, используя Календарь, но я думаю, что вы бы сделали cal.getInstance(),затем cal.add(Calendar.DAY, 1) затем cal.set(Calendar.HOUR_OF_DAY, 8)

http://developer.android.com/reference/java/util/Calendar.html

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...