Вы можете использовать Календарь и установить его на нужное вам время.Затем вы должны сделать 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 и поиграете с ним, вы, как правило, сможете это выяснить.