7

月曜日から金曜日だけアラームを鳴らしたい。私のコードはここにあります

if (chk_weekday.isChecked()) {

                    int day = calNow.get(Calendar.DAY_OF_WEEK);
                    if (day == 2 || day == 3 || day == 4 || day == 5
                            || day == 6) {

                        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                                calSet.getTimeInMillis(), 1 * 60 * 60 * 1000,
                                pendingIntent);

                    }

アイデアがあります。

4

3 に答える 3

20

このコードを試してください。アプリで正常に実行されます

if (chk_monday.isChecked()) {
                        forday(2);
                    } else if (chk_tuesday.isChecked()) {
                        forday(3);
                    } else if (chk_wednesday.isChecked()) {
                        forday(4);
                    } else if (chk_thursday.isChecked()) {
                        forday(5);
                    } else if (chk_friday.isChecked()) {
                        forday(6);
                    } else if (chk_sat.isChecked()) {
                        forday(7);
                    } else if (chk_sunday.isChecked()) {
                        forday(1);
                    }

public void forday(int week) {

        calSet.set(Calendar.DAY_OF_WEEK, week);
        calSet.set(Calendar.HOUR_OF_DAY, hour);
        calSet.set(Calendar.MINUTE, minuts);
        calSet.set(Calendar.SECOND, 0);
        calSet.set(Calendar.MILLISECOND, 0);

        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
                calSet.getTimeInMillis(), 1 * 60 * 60 * 1000, pendingIntent);
    }
于 2012-09-20T11:14:51.927 に答える
4

あなたの質問から、土曜日、日曜日を除いて毎日特定の活動を行いたいと思います。あなたのコードは正しいですが、間違った方法で宣言している場合は、次のように変更して試してください

OnCreate() メソッドでアラームを宣言する

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), 1 * 60 * 60 * 1000,  pendingIntent);

これで、アラームが毎日繰り返すように設定され、土日を除く毎日アクションを実行する必要があります

  if (chkMonday.isChecked()) 
  {
      activityToPerform();
  }

  if (chkTuesday.isChecked()) 
  {
      activityToPerform();
  }

  if (chkWednesday.isChecked()) 
  {
      activityToPerform();
  }

  if (chkThrusday.isChecked()) 
  {
      activityToPerform();
  }

  if (chkFriday.isChecked()) 
  {
      activityToPerform();
  }

  if (chkSaturday.isChecked()) 
  {
      activityToPerform();
  }

  if (chkSunday.isChecked()) 
  {
      activityToPerform();
  }

  private void activityToPerform()
  {
    // your action code
  }
于 2012-09-20T08:03:28.247 に答える
2

1つの方法は、アラーム通知がブロードキャストで受信されたときに、土曜日であれば翌日を確認し、月曜日にアラームを設定し、それ以外の場合は1日追加して作成することです.

これには毎回新しいアラームを設定する必要があります。

于 2012-09-20T07:43:11.793 に答える