在Android中设置重复星期几闹钟

有人可以提供良好的逻辑设置重复的星期几闹钟? 我已经完成每周使用报警

alarmCalendar.set(Calendar.HOUR, AlarmHrsInInt); alarmCalendar.set(Calendar.MINUTE, AlarmMinsInInt); alarmCalendar.set(Calendar.SECOND, 0); alarmCalendar.set(Calendar.AM_PM, amorpm); Long alarmTime = alarmCalendar.getTimeInMillis(); Intent intent = new Intent(Alarm.this, AlarmReciever.class); intent.putExtra("keyValue", key); PendingIntent pi = PendingIntent.getBroadcast(Alarm.this, key, intent, PendingIntent.FLAG_UPDATE_CURRENT); am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 7*1440*60000 , pi); 

报警触发时间和7天后自动触发。

但我的要求是我想select几天,而不仅仅是7天。

例如每星期一,星期二,星期四上午9:00 – 警报应该自动触发。 我怎么去做这个setRepeating。

有人能帮我解决这个问题吗?

谢谢!

Solutions Collecting From Web of "在Android中设置重复星期几闹钟"

这些问题谈论你想要的同样的事情。 这些答案将是有益的:

您只需指定启动date,然后每7天重复一次。 在给定问题的答案中没有几种方法:

我怎样才能得到警报pipe理器周重复报警?

Android通知在特定的工作日直接熄灭

如何在Android上重复闹钟一周

更新:

在你的评论你说

如何在setRepeating中设置triggerAtMillis部分。 比如说今天是星期二,我select星期一,星期三,星期五。 – 我周三放什么?

我明白了,如果今天是星期二,如何设置闹钟让我们说周三重复吧? 首先是的,你可以使用多个ID分别设置每一天的警报。

然后你可以添加alarmCalendar.set(Calendar.DAY_OF_WEEK, week); 行到您现有的代码。 基于星期几(从1到7)重复那一天。 你可以把它作为parameter passing给一个函数。 喜欢:

  setAlarm(2); //set the alarm for this day of the week public void setAlarm(int dayOfWeek) { // Add this day of the week line to your existing code alarmCalendar.set(Calendar.DAY_OF_WEEK, dayOfWeek); alarmCalendar.set(Calendar.HOUR, AlarmHrsInInt); alarmCalendar.set(Calendar.MINUTE, AlarmMinsInInt); alarmCalendar.set(Calendar.SECOND, 0); alarmCalendar.set(Calendar.AM_PM, amorpm); Long alarmTime = alarmCalendar.getTimeInMillis(); //Also change the time to 24 hours. am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, 24 * 60 * 60 * 1000 , pi); } 

我从上面的问题中select了一个例子。 希望现在更清楚。

 Intent intent1 = new Intent(getApplicationContext(), NotificationReceiver.class); PendingIntent pendingIntent1 = PendingIntent.getBroadcast(getApplicationContext(), 1, intent1, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager alarmManager1 = (AlarmManager)getSystemService(ALARM_SERVICE); java.util.Calendar calendar1 = java.util.Calendar.getInstance(); calendar1.set(java.util.Calendar.DAY_OF_WEEK, Calendar.MONDAY); calendar1.set(java.util.Calendar.HOUR_OF_DAY, 22); calendar1.set(java.util.Calendar.MINUTE, 8); calendar1.set(java.util.Calendar.SECOND, 0); alarmManager1.setExact(AlarmManager.RTC, calendar1.getTimeInMillis(), pendingIntent1); 
 if (Monday.isChecked()) { setalarm(2); } else if (Tuesday.isChecked()) { setalarm(3); } else if (Wednesday.isChecked()) { setalarm(4); } else if (Thursday.isChecked()) { setalarm(5); } else if (Friday.isChecked()) { setalarm(6); } else if (Saturday.isChecked()) { setalarm(7); } else if (Sunday.isChecked()) { setalarm(1); } public void setalarm(int weekno) { cal.set(Calendar.DAY_OF_WEEK, weekno); cal.set(Calendar.MINUTE, min); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1 * 60 * 60 * 1000, pendingIntent); }