我试图在每天上午8点设置闹钟。
我知道如何创建闹钟,但我如何将其设置为每天上午8:00启动。
am.setRepeating()
答案 0 :(得分:7)
您可以使用日历并将其设置为您想要的适当时间。然后你会做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,你会得到一个与明天早上8点匹配的日历(称之为cal),然后
triggerAtTime = cal.getTimeInMillis()-Calendar.getInstance().getTimeInMillis()
那就是
alarmMan.setRepeating(AlarmManager.ELAPSED_REALTIME, triggerAtTime, 86400000, pendingIntent);
而且我不知道明天早上8点如何使用日历获得,但我认为你会cal.getInstance()
,然后是cal.add(Calendar.DAY, 1)
然后cal.set(Calendar.HOUR_OF_DAY, 8)
http://developer.android.com/reference/java/util/Calendar.html
我几乎没有使用过Calendar,所以我可能会遇到一些错误,你可能需要稍微玩一下,但这基本上是需要做的。将来,如果您只是阅读DOC并使用它,您通常可以弄明白。