【问题标题】:Repeating alarm on specific days在特定日期重复警报
【发布时间】:2014-08-31 21:01:27
【问题描述】:

我的应用程序根据两个设置的警报(开始时间和停止时间)触发了两次意图。我现在正在尝试对此进行扩展,以便可以在多天指定设置的警报,并可以选择重复。

我在目标设备上的 GCM 中收到了 8 个整数值,repeat = 1、sun = 1、mon = 1 等...如果选择了 day 或 repeat,它的值为 1。

如何让闹钟在特定日期重复?

我可以输入接收到的值吗,例如 0111110 将是整个工作日...然后遍历它们并创建值为 1 的警报??

我不知道如何组织这个,有人可以建议吗?

谢谢。

【问题讨论】:

  • 解析您的响应,然后根据结果安排警报器
  • 设置一个日常闹钟,然后在触发时检查当天或设置多达七个周报

标签: android alarmmanager


【解决方案1】:

得到它的工作,使用以下...也许其他人会发现这很有用

             int[] daysOfWeek = new int[7]; 
             int[] daysOfWeekValue = new int[7]; 
             //parce from GCM values recieved
                    final int sunday = Integer.parseInt(sun);
                    daysOfWeek[0] = sunday; 
                    final int monday = Integer.parseInt(mon);
                    daysOfWeek[1] = monday; 
                    final int tuesday = Integer.parseInt(tue);
                    daysOfWeek[2] = tuesday; 
                    final int wednesday = Integer.parseInt(wed);
                    daysOfWeek[3] = wednesday; 
                    final int thursday = Integer.parseInt(thu);
                    daysOfWeek[4] = thursday; 
                    final int friday = Integer.parseInt(fri);
                    daysOfWeek[5] = friday; 
                    final int saturday  = Integer.parseInt(sat);
                    daysOfWeek[6] = saturday; 
                    final int repeating = Integer.parseInt(repeat);


                    daysOfWeekValue[0]=1; 
                    daysOfWeekValue[1]=2; 
                    daysOfWeekValue[2]=3; 
                    daysOfWeekValue[3]=4; 
                    daysOfWeekValue[4]=5; 
                    daysOfWeekValue[5]=6; 
                    daysOfWeekValue[6]=7; 

                    for (int i=0; i<daysOfWeek.length; i++)
                    {
                        if(daysOfWeek[i]==1){
                        Log.i(TAG, "Set alarm on day: " + daysOfWeekValue[i]);

                    final Calendar calNow = Calendar.getInstance();
                    final Calendar calSet = (Calendar) calNow.clone();

                    calSet.set(Calendar.DAY_OF_WEEK, daysOfWeekValue[i]);// 1 for                      sunday, 2 for monday etc
                    calSet.set(Calendar.HOUR_OF_DAY, starthour);
                    calSet.set(Calendar.MINUTE, startmin);
                    calSet.set(Calendar.SECOND, 0);
                    calSet.set(Calendar.MILLISECOND, 0);

                    .....

【讨论】:

    最近更新 更多