0

月曜日にアラームを設定しようとしていますが、適切に機能していないため、月曜日に一度だけアラームを設定する方法を教えてください。

if (chk_wednesday.isChecked()) {
                        weekday = 7 - calNow.get(Calendar.DAY_OF_WEEK);
                        calSet.add(Calendar.DATE, weekday);
                        forday(weekday);
                        }


public void forday(int week) {

                days = calNow.get(Calendar.DAY_OF_MONTH);
                month = calNow.get(Calendar.MONTH);
                year = calNow.get(Calendar.YEAR);

        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);

        calSet.set(Calendar.DAY_OF_MONTH, days);
        calSet.set(Calendar.MONTH, month);
        calSet.set(Calendar.YEAR, year);

        if (calSet.compareTo(calNow) <= 0) {
            // Today Set time passed, count to tomorrow
            calSet.add(Calendar.DATE, 1);
        }
        Log.i("time1", "" + calSet.getTimeInMillis());
        alarmManager.set(AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(),
                pendingIntent);
    }

誰でも私を助けてくれます。事前に感謝します

4

1 に答える 1

1

ここでday_of_weekhourminute、アラームを発生させたい日時を定義します。今週の適切な時刻に calSet を設定します。次に、その時間がすでに今週過ぎている場合は、週を追加して、来週の適切な時間に設定します。

calNow = Calendar.getInstance();

calSet = Calendar.getInstance();
calSet.set(Calendar.DAY_OF_WEEK, day_of_week);
calSet.set(Calendar.HOUR_OF_DAY, hour);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);

if (calSet.before(calNow)) {
    nextAlarm.add(Calendar.WEEK_OF_YEAR, 1);
}
于 2012-09-27T06:13:27.223 に答える